diff --git a/6.1.9/patches/01_fix_Sybase_conf.patch b/6.1.9/patches/01_fix_Sybase_conf.patch new file mode 100644 index 0000000000000000000000000000000000000000..8975235594fb136876a4b35bde6fe566aad42102 --- /dev/null +++ b/6.1.9/patches/01_fix_Sybase_conf.patch @@ -0,0 +1,21 @@ +diff --git a/sympa-6.1.9-src/src/etc/script/create_db.Sybase b/sympa-6.1.9-src/src/etc/script/create_db.Sybase +index 30f84af..7b337f6 100644 +--- a/sympa-6.1.9-src/src/etc/script/create_db.Sybase ++++ b/sympa-6.1.9-src/src/etc/script/create_db.Sybase +@@ -216,11 +216,12 @@ CREATE TABLE bulkspool_table ( + + create index messagekey_bulkspool_fk on bulkspool_table (messagekey_bulkspool) + go +-create table conf_tabl + ++create table conf_table ( + robot_conf varchar(80) not null + label_conf varchar(80) not null + value_conf varchar(300) null +- constraint ind_conf primary key (robot_conf, label_conf ++ constraint ind_conf primary key (robot_conf, label_conf) ++) ++go + +-go +\ No newline at end of file diff --git a/6.1.9/patches/02_list_db_caching.patch b/6.1.9/patches/02_list_db_caching.patch new file mode 100644 index 0000000000000000000000000000000000000000..1662165fcfc0f06b3410ab552ee4e7a946550c7a --- /dev/null +++ b/6.1.9/patches/02_list_db_caching.patch @@ -0,0 +1,575 @@ +diff --git a/sympa-6.1.9-src/src/etc/script/create_db.Oracle b/sympa-6.1.9-src/src/etc/script/create_db.Oracle +index a425718..388fd7d 100644 +--- a/sympa-6.1.9-src/src/etc/script/create_db.Oracle ++++ b/sympa-6.1.9-src/src/etc/script/create_db.Oracle +@@ -163,4 +163,20 @@ CREATE TABLE conf_table ( + CONSTRAINT ind_conf primary key (robot_conf,label_conf) + ); + ++CREATE TABLE list_table ( ++ name_list varchar(100) NOT NULL, ++ path_list varchar(100) NOT NULL, ++ robot_list varchar(100) NOT NULL, ++ status_list enum('open','closed','pending','error_config','family_closed') NOT NULL, ++ creation_email_list varchar(100) NOT NULL, ++ creation_epoch_list datetime , ++ subject_list varchar(100) NOT NULL, ++ web_archive_list tinyint(1) NOT NULL, ++ topics_list varchar(100) NOT NULL, ++ editors_list varchar(100) NOT NULL, ++ owners_list varchar(100) NOT NULL, ++ CONSTRAINT ind_list PRIMARY KEY (name_list,robot_list) ++); ++ ++ + ! +diff --git a/sympa-6.1.9-src/src/etc/script/create_db.Pg b/sympa-6.1.9-src/src/etc/script/create_db.Pg +index 3893c6e..5c890a2 100644 +--- a/sympa-6.1.9-src/src/etc/script/create_db.Pg ++++ b/sympa-6.1.9-src/src/etc/script/create_db.Pg +@@ -177,4 +177,22 @@ CREATE TABLE conf_table ( + value_conf varchar(300), + constraint ind_conf primary key (robot_conf,label_conf) + ); +-CREATE INDEX robot_conf_idx ON conf_table(robot_conf,label_conf); +\ No newline at end of file ++CREATE INDEX robot_conf_idx ON conf_table(robot_conf,label_conf); ++ ++DROP TABLE list_table; ++CREATE TABLE list_table ( ++ name_list varchar(100) NOT NULL, ++ path_list varchar(100) NOT NULL, ++ robot_list varchar(100) NOT NULL, ++ status_list enum('open','closed','pending','error_config','family_closed') NOT NULL, ++ creation_email_list varchar(100) NOT NULL, ++ creation_epoch_list datetime , ++ subject_list varchar(100) NOT NULL, ++ web_archive_list tinyint(1) NOT NULL, ++ topics_list varchar(100) NOT NULL, ++ owners_list varchar(100) NOT NULL, ++ editors_list varchar(100) NOT NULL, ++ CONSTRAINT ind_list PRIMARY KEY (name_list,robot_list) ++); ++CREATE INDEX list_idx ON list_table(name_list, robot_list); ++ +diff --git a/sympa-6.1.9-src/src/etc/script/create_db.SQLite b/sympa-6.1.9-src/src/etc/script/create_db.SQLite +index 00ed639..e3c221d 100644 +--- a/sympa-6.1.9-src/src/etc/script/create_db.SQLite ++++ b/sympa-6.1.9-src/src/etc/script/create_db.SQLite +@@ -156,3 +156,20 @@ CREATE TABLE conf_table ( + PRIMARY KEY (robot_conf,label_conf) + ); + CREATE INDEX conf_idx ON conf_table(robot_conf,label_conf); ++ ++CREATE TABLE list_table ( ++ name_list varchar(100) NOT NULL, ++ path_list varchar(100) NOT NULL, ++ robot_list varchar(100) NOT NULL, ++ status_list enum('open','closed','pending','error_config','family_closed') NOT NULL, ++ creation_email_list varchar(100) NOT NULL, ++ creation_epoch_list datetime , ++ subject_list varchar(100) NOT NULL, ++ web_archive_list tinyint(1) NOT NULL, ++ topics_list varchar(100) NOT NULL, ++ owners_list varchar(100) NOT NULL, ++ editors_list varchar(100) NOT NULL, ++ CONSTRAINT ind_list PRIMARY KEY (name_list,robot_list) ++); ++CREATE INDEX list_idx ON list_table(name_list, robot_list); ++ +diff --git a/sympa-6.1.9-src/src/etc/script/create_db.Sybase b/sympa-6.1.9-src/src/etc/script/create_db.Sybase +index 7b337f6..615e2bc 100644 +--- a/sympa-6.1.9-src/src/etc/script/create_db.Sybase ++++ b/sympa-6.1.9-src/src/etc/script/create_db.Sybase +@@ -225,3 +225,22 @@ create table conf_table ( + ) + go + ++CREATE TABLE list_table ( ++ name_list varchar(100) NOT NULL, ++ path_list varchar(100) NOT NULL, ++ robot_list varchar(100) NOT NULL, ++ status_list enum('open','closed','pending','error_config','family_closed') NOT NULL, ++ creation_email_list varchar(100) NOT NULL, ++ creation_epoch_list datetime , ++ subject_list varchar(100) NOT NULL, ++ web_archive_list tinyint(1) NOT NULL, ++ topics_list varchar(100) NOT NULL, ++ editors_list varchar(100) NOT NULL, ++ owners_list varchar(100) NOT NULL, ++ CONSTRAINT ind_list PRIMARY KEY (name_list,robot_list) ++) ++go ++ ++CREATE INDEX id_list_fk ON list_table(name_list, robot_list) ++go ++ +diff --git a/sympa-6.1.9-src/src/etc/script/create_db.mysql b/sympa-6.1.9-src/src/etc/script/create_db.mysql +index 3a178c2..f998b65 100644 +--- a/sympa-6.1.9-src/src/etc/script/create_db.mysql ++++ b/sympa-6.1.9-src/src/etc/script/create_db.mysql +@@ -158,3 +158,19 @@ CREATE TABLE conf_table ( + value_conf varchar(300) default NULL, + PRIMARY KEY (robot_conf,label_conf) + ); ++ ++CREATE TABLE list_table ( ++ name_list varchar(100) NOT NULL default '', ++ path_list varchar(100) NOT NULL default '', ++ robot_list varchar(100) NOT NULL default '', ++ status_list enum('open','closed','pending','error_config','family_closed') NOT NULL default 'closed', ++ creation_email_list varchar(100) NOT NULL default '', ++ creation_epoch_list datetime default NULL, ++ subject_list varchar(100) NOT NULL default '', ++ web_archive_list tinyint(1) NOT NULL default '0', ++ topics_list varchar(100) NOT NULL default '', ++ editors_list varchar(100) NOT NULL default '', ++ owners_list varchar(100) NOT NULL default '', ++ PRIMARY KEY (name_list,robot_list) ++); ++ +diff --git a/sympa-6.1.9-src/src/lib/Conf.pm b/sympa-6.1.9-src/src/lib/Conf.pm +index b8f3c27..22f2b53 100644 +--- a/sympa-6.1.9-src/src/lib/Conf.pm ++++ b/sympa-6.1.9-src/src/lib/Conf.pm +@@ -200,6 +200,10 @@ sub load { + unless (defined $o{'tmpdir'}) { + $o{'tmpdir'}[0] = "$spool/tmp"; + } ++ unless (defined $o{'db_list_cache'}){ ++ $o{'db_list_cache'}[0] = 0; ++ } ++ + + ## Check if we have unknown values. + foreach $i (sort keys %o) { +diff --git a/sympa-6.1.9-src/src/lib/List.pm b/sympa-6.1.9-src/src/lib/List.pm +index 1b15f9a..397c494 100644 +--- a/sympa-6.1.9-src/src/lib/List.pm ++++ b/sympa-6.1.9-src/src/lib/List.pm +@@ -1915,6 +1915,12 @@ sub save_config { + return undef; + } + ++ if ($List::use_db) { ++ unless (&_update_list_db) { ++ &do_log('err', "Unable to update list_table"); ++ } ++ } ++ + return 1; + } + +@@ -7166,6 +7172,7 @@ sub rename_list_db { + + my $statement_subscriber; + my $statement_admin; ++ my $statement_list_cache; + + ## Check database connection + unless ($dbh and $dbh->ping) { +@@ -7198,6 +7205,21 @@ sub rename_list_db { + do_log('err','Unable to execute SQL statement "%s" : %s', $statement_admin, $dbh->errstr); + return undef; + } ++ ++ if ($List::use_db) { ++ $statement_admin = sprintf "UPDATE list_table SET name_list=%s, robot_list=%s WHERE (name_list=%s AND robot_list=%s)", ++ $dbh->quote($new_listname), ++ $dbh->quote($new_robot), ++ $dbh->quote($self->{'name'}), ++ $dbh->quote($self->{'domain'}) ; ++ ++ do_log('debug', 'List::rename_list_db statement : %s', $statement_admin ); ++ ++ unless ($dbh->do($statement_admin)) { ++ do_log('err','Unable to execute SQL statement "%s" : %s', $statement_admin, $dbh->errstr); ++ return undef; ++ } ++ } + + return 1; + } +@@ -9799,6 +9821,7 @@ sub get_lists { + my $robot_context = shift || '*'; + my $options = shift; + my $requested_lists = shift; ## Optional parameter to load only a subset of all lists ++ my $use_files = shift; + + my(@lists, $l,@robots); + do_log('debug2', 'List::get_lists(%s)',$robot_context); +@@ -9834,7 +9857,13 @@ sub get_lists { + if ( defined($requested_lists)){ + @files = sort @{$requested_lists}; + }else { +- @files = sort readdir(DIR); ++ if ($use_files) { ++ @files = sort readdir(DIR); ++ }else { ++ # get list names from list config table ++ my $files = &get_lists_db('SELECT name_list FROM list_table'); ++ @files = @{$files}; ++ } + } + + foreach my $l (@files) { +@@ -12250,6 +12279,139 @@ sub get_list_id { + return $self->{'name'}.'@'.$self->{'domain'}; + } + ++## Support for list config caching in database ++ ++sub get_lists_db { ++ my $statement = shift; ++ return undef unless defined($statement); ++ do_log('info', 'List::get_search_list_db(%s)', $statement); ++ ++ unless ($List::use_db) { ++ &do_log('info', 'Sympa not setup to use DBI'); ++ return undef; ++ } ++ ++ my ($l, @lists); ++ ++ ## Check database connection ++ unless ($dbh and $dbh->ping) { ++ return undef unless &db_connect(); ++ } ++ push @sth_stack, $sth; ++ &do_log('debug2','SQL: %s', $statement); ++ unless ($sth = $dbh->prepare($statement)) { ++ &do_log('err','Unable to prepare SQL statement : %s', $dbh->errstr); ++ return undef; ++ } ++ unless ($sth->execute) { ++ do_log('err','Unable to execute SQL statement "%s" : %s', $statement, $dbh->errstr); ++ return undef; ++ } ++ while ($l = $sth->fetchrow_hashref) { ++ my $name = $l->{'name_list'}; ++ push @lists, $name; ++ } ++ $sth->finish(); ++ $sth = pop @sth_stack; ++ ++ return \@lists; ++} ++ ++sub _update_list_db ++{ ++ my ($self) = shift; ++ my @admins; ++ my $i; ++ my $adm_txt; ++ my $ed_txt; ++ my $statement = sprintf "SELECT COUNT(*) FROM list_table WHERE name_list = %s AND robot_list = %s" , $dbh->quote($self->{'name'}), $dbh->quote($self->{'admin'}{'host'}); ++ unless ($sth = $dbh->prepare($statement)) { ++ do_log('err','Unable to prepare SQL statement : %s', $dbh->errstr); ++ return undef; ++ } ++ my $ret; ++ unless ($sth->execute) { ++ do_log('err',"Unable to execute SQL statement '%s' : %s", $statement, $dbh->errstr); ++ return undef; ++ } ++ ++ my $op = "UPDATE"; ++ my $set = ""; ++ my $ret = $sth->fetchrow_arrayref; ++ $sth->finish; ++ my $count = $ret->[0]; ++ unless ($count > 0) { ++ $op = "INSERT INTO"; ++ $set = ""; ++ } ++ my $name = $self->{'name'}; ++ my $subject = $self->{'admin'}{'subject'} || ''; ++ my $status = $self->{'admin'}{'status'}; ++ my $robot = $self->{'admin'}{'host'}; ++ my $web_archive = &is_web_archived($self) || 0; ++ my $topics = ''; ++ if ($self->{'admin'}{'topics'}) { ++ $topics = join(',',@{$self->{'admin'}{'topics'}}); ++ } ++ ++ foreach $i (@{$self->{'admin'}{'owner'}}) { ++ if (ref($i->{'email'})) { ++ push(@admins, @{$i->{'email'}}); ++ } elsif ($i->{'email'}) { ++ push(@admins, $i->{'email'}); ++ } ++ } ++ $adm_txt = join(',',@admins) || ''; ++ ++ undef @admins; ++ foreach $i (@{$self->{'admin'}{'editor'}}) { ++ if (ref($i->{'email'})) { ++ push(@admins, @{$i->{'email'}}); ++ } elsif ($i->{'email'}) { ++ push(@admins, $i->{'email'}); ++ } ++ } ++ $ed_txt = join(',',@admins) || ''; ++ my $statement = sprintf "%s `list_table` %s SET status_list= %s, name_list=%s, robot_list=%s, subject_list=%s, web_archive_list=%s, topics_list=%s, owners_list=%s, editors_list=%s ", ++ $op, $set, $dbh->quote($status), $dbh->quote($name), ++ $dbh->quote($robot), $dbh->quote($subject), ++ $dbh->quote($web_archive), $dbh->quote($topics), ++ $dbh->quote($adm_txt),$dbh->quote($ed_txt); ++ ++ if ($op eq "UPDATE") { ++ $statement .= sprintf " WHERE robot_list = %s AND name_list = %s ", $dbh->quote($robot), $dbh->quote($name); ++ } ++ ++ unless ($sth = $dbh->prepare($statement)) { ++ do_log('err','Unable to prepare SQL statement : %s', $dbh->errstr); ++ return undef; ++ } ++ unless ($sth->execute) { ++ do_log('err','Unable to execute SQL statement "%s" : %s', $statement, $dbh->errstr); ++ } ++ return 1; ++} ++ ++sub _flush_list_db ++{ ++ my ($listname) = shift; ++ my $statement; ++ unless ($listname) { ++ $statement = "TRUNCATE list_table"; ++ } else { ++ $statement = sprintf "DELETE FROM list_table WHERE name_list = %s", $dbh->quote($listname); ++ } ++ ++ unless ($sth = $dbh->prepare($statement)) { ++ do_log('err','Unable to prepare SQL statement : %s', $dbh->errstr); ++ return undef; ++ } ++ unless ($sth->execute) { ++ do_log('err',"Unable to execute SQL statement '%s' : %s", $statement, $dbh->errstr); ++ return undef; ++ } ++} ++ + ###### END of the List package ###### + + 1; +diff --git a/sympa-6.1.9-src/src/lib/Upgrade.pm b/sympa-6.1.9-src/src/lib/Upgrade.pm +index ea7d958..ffac2de 100644 +--- a/sympa-6.1.9-src/src/lib/Upgrade.pm ++++ b/sympa-6.1.9-src/src/lib/Upgrade.pm +@@ -856,8 +856,19 @@ sub probe_db { + }, + 'conf_table' => {'robot_conf' => 'varchar(80)', + 'label_conf' => 'varchar(80)', +- 'value_conf' => 'varchar(300)'} +- }, ++ 'value_conf' => 'varchar(300)'}, ++ 'lists_table' => {'name_list'=>'varchar(100)', ++ 'path_list'=>'varchar(100)', ++ 'robot_list'=>'varchar(100)', ++ 'status_list'=>"enum('open','closed','pending','error_config','family_closed')", ++ 'creation_email_list'=>'varchar(100)', ++ 'creation_epoch_list'=>'datetime', ++ 'subject_list'=>'varchar(100)', ++ 'web_archive_list'=>'tinyint(1)', ++ 'topics_list'=>'varchar(100)', ++ 'editors_list'=>'varchar(100)', ++ 'owners_list'=>'varchar(100)'} ++ }, + 'SQLite' => {'user_table' => {'email_user' => 'text', + 'gecos_user' => 'text', + 'password_user' => 'text', +@@ -963,7 +974,19 @@ sub probe_db { + 'dkim_header_list_bulkspool' => 'varchar(500)'}, + 'conf_table' => {'robot_conf' => 'text', + 'label_conf' => 'text', +- 'value_conf' => 'text'}}); ++ 'value_conf' => 'text'}, ++ 'lists_table' => {'name_list'=>'varchar(100)', ++ 'path_list'=>'varchar(100)', ++ 'robot_list'=>'varchar(100)', ++ 'status_list'=>"enum('open','closed','pending','error_config','family_closed')", ++ 'creation_email_list'=>'varchar(100)', ++ 'creation_epoch_list'=>'datetime', ++ 'subject_list'=>'varchar(100)', ++ 'web_archive_list'=>'tinyint(1)', ++ 'topics_list'=>'varchar(100)', ++ 'editors_list'=>'varchar(100)', ++ 'owners_list'=>'varchar(100)'} ++ } ); + + my %not_null = ('email_user' => 1, + 'list_subscriber' => 1, +@@ -992,6 +1015,16 @@ sub probe_db { + 'messagekey_bulkmailer' => 1, + 'packetid_bulkmailer' => 1, + 'messagekey_bulkspool' => 1, ++ 'name_list'=>1, ++ 'path_list'=>1, ++ 'robot_list'=>1, ++ 'status_list'=>1, ++ 'creation_email_list'=>1, ++ 'subject_list'=>1, ++ 'web_archive_list'=>1, ++ 'topics_list'=>1, ++ 'owners_list'=>1, ++ 'editors_list'=>1 + ); + + my %primary = ('user_table' => ['email_user'], +@@ -1004,7 +1037,8 @@ sub probe_db { + 'one_time_ticket_table' => ['ticket_one_time_ticket'], + 'bulkmailer_table' => ['messagekey_bulkmailer','packetid_bulkmailer'], + 'bulkspool_table' => ['messagekey_bulkspool'], +- 'conf_table' => ['robot_conf','label_conf'] ++ 'conf_table' => ['robot_conf','label_conf'], ++ 'list_table'=> ['name_list','robot_list'] + ); + + ## List the required INDEXES +diff --git a/sympa-6.1.9-src/src/lib/admin.pm b/sympa-6.1.9-src/src/lib/admin.pm +index 5683598..1397fa3 100644 +--- a/sympa-6.1.9-src/src/lib/admin.pm ++++ b/sympa-6.1.9-src/src/lib/admin.pm +@@ -341,6 +341,7 @@ sub create_list_old{ + &do_log('notice', "Synchronizing list members..."); + $list->sync_include(); + } ++ $list->save_config; + + return $return; + } +diff --git a/sympa-6.1.9-src/src/lib/confdef.pm b/sympa-6.1.9-src/src/lib/confdef.pm +index ed37441..51f96f8 100644 +--- a/sympa-6.1.9-src/src/lib/confdef.pm ++++ b/sympa-6.1.9-src/src/lib/confdef.pm +@@ -526,6 +526,11 @@ our @params = ( + default => 'mailer-daemon|sympa|listserv|majordomo|smartlist|mailman', + vhost => '1', + }, ++ { ++ name => 'db_list_cache', ++ default => '0', ++ advice => 'Whether or not to cache lists in the database', ++ }, + { title => 'Internationalization' }, + { + name => 'lang', +diff --git a/sympa-6.1.9-src/src/sympa.pl.in b/sympa-6.1.9-src/src/sympa.pl.in +index 1142b50..130f7df 100644 +--- a/sympa-6.1.9-src/src/sympa.pl.in ++++ b/sympa-6.1.9-src/src/sympa.pl.in +@@ -84,6 +84,7 @@ Options: + --dump=list\@dom|ALL : dumps subscribers + --make_alias_file : create file in /tmp with all aliases (usefull when aliases.tpl is changed) + --lowercase : lowercase email addresses in database ++ --sync_list_db[=listname] : syncs filesystem list configs to the database cache of list configs, optionally sync an individual list if specified. + --md5_encode_password : rewrite password in database using md5 fingerprint. YOU CAN'T UNDO unless you save this table first + --create_list --robot=robot_name --input_file=/path/to/file.xml + : create a list with the xml file under robot_name +@@ -125,7 +126,7 @@ encryption. + ## Check --dump option + my %options; + unless (&GetOptions(\%main::options, 'dump=s', 'debug|d', ,'log_level=s','foreground', 'service=s','config|f=s', +- 'lang|l=s', 'mail|m', 'keepcopy|k=s', 'help', 'version', 'import=s','make_alias_file','lowercase','md5_encode_password', ++ 'lang|l=s', 'mail|m', 'keepcopy|k=s', 'help', 'version', 'import=s','make_alias_file','lowercase','sync_list_db','md5_encode_password', + 'close_list=s','rename_list=s','new_listname=s','new_listrobot=s','purge_list=s','create_list','instantiate_family=s','robot=s','add_list=s','modify_list=s','close_family=s','md5_digest=s', + 'input_file=s','sync_include=s','upgrade','upgrade_shared','from=s','to=s','reload_list_config','list=s','quiet','close_unknown','test_database_message_buffer','conf_2_db')) { + &fatal_err("Unknown options."); +@@ -156,7 +157,8 @@ $main::options{'batch'} = 1 if ($main::options{'dump'} || + $main::options{'upgrade_shared'} || + $main::options{'test_database_message_buffer'} || + $main::options{'conf_2_db'} || +- $main::options{'reload_list_config'} ++ $main::options{'reload_list_config'} || ++ $main::options{'sync_list_db'} + ); + + # Some option force foreground mode +@@ -925,6 +927,32 @@ elsif ($main::options{'close_family'}) { + print STDOUT $string; + exit 0; + } ++########################################## ++elsif ($main::options{'sync_list_db'}) { ++ unless ($Conf{'db_list_cache'}) { ++ print STDOUT "\nSympa not configured to use database list caching \n"; ++ exit 1; ++ } ++ my $listname = $main::options{'sync_list_db'}; ++ if (length($listname) > 1) { ++ my ($listname, $robot) = split /\@/, $listname; ++ my $list = new List ($listname, $robot); ++ unless (defined $list) { ++ print STDOUT "\nList '$list' does not exist. \n"; ++ exit 1; ++ } ++ if (&List::_flush_list_db($listname)) { ++ $list->_update_list_db; ++ } ++ } else { ++ &List::_flush_list_db(); ++ my $all_lists = &List::get_lists('*', undef, undef, 1); ++ foreach my $list (@$all_lists) { ++ $list->_update_list_db; ++ } ++ } ++ exit 0; ++} + + + ## Do we have right access in the directory +diff --git a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +index 03e6c81..5c03aa3 100644 +--- a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +@@ -7940,7 +7940,11 @@ sub do_remove_arc { + ## Checking families and other virtual hosts. + &get_server_details(); + +- my $all_lists = &List::get_lists($robot); ++ #my $all_lists = &List::get_lists($robot); ++ # use list config db table to get lists ++ my $statement = "SELECT name_list from list_table WHERE status_list = 'pending'"; ++ my @lists = &List::get_lists_db($statement); ++ my $all_lists = &List::get_lists($robot, undef, @lists); + foreach my $list ( @$all_lists ) { + if ($list->{'admin'}{'status'} eq 'pending') { + $param->{'pending'}{$list->{'name'}}{'subject'} = $list->{'admin'}{'subject'}; +@@ -7960,7 +7964,11 @@ sub do_remove_arc { + ## Checking families and other virtual hosts. + &get_server_details(); + +- my $all_lists = &List::get_lists($robot); ++ #my $all_lists = &List::get_lists($robot); ++ # use list config db table to get lists ++ my $statement = "SELECT name_list from list_table WHERE status_list = 'closed'"; ++ my @lists = &List::get_lists_db($statement); ++ my $all_lists = &List::get_lists($robot, undef, @lists); + foreach my $list ( @$all_lists ) { + if ($list->{'admin'}{'status'} eq 'closed' || + $list->{'admin'}{'status'} eq 'family_closed') { +@@ -8873,7 +8881,13 @@ Sends back the list creation edition form. + + ## Members list + my $record = 0; +- my $all_lists = &List::get_lists($robot); ++ #my $all_lists = &List::get_lists($robot); ++ # use list config db table to get lists ++ my $regexp = $param->{'regexp'}; ++ my $statement = sprintf "SELECT name_list from list_table WHERE name_list RLIKE '%s' OR subject_list RLIKE '%s'", $regexp, $regexp; ++ my @lists = &List::get_lists_db($statement) || undef; ++ my $all_lists = &List::get_lists($robot, undef, @lists); ++ + foreach my $list ( @$all_lists ) { + my $is_admin; + ## Search filter +@@ -10280,7 +10294,7 @@ sub do_rename_list { + 'error_type' => 'unknown_robot'}); + return undef; + } +- ++ $list->save_config(); + ## Were aliases installed? + if ($param->{'aliases'} == 1) { + $param->{'auto_aliases'} = 1; diff --git a/6.1.9/patches/03_rename_lists_no_pending.patch b/6.1.9/patches/03_rename_lists_no_pending.patch new file mode 100644 index 0000000000000000000000000000000000000000..a236026a122dfdb526607c52826c143be8570da7 --- /dev/null +++ b/6.1.9/patches/03_rename_lists_no_pending.patch @@ -0,0 +1,17 @@ +diff --git a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +index 5c03aa3..0ac9cbf 100644 +--- a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +@@ -10303,9 +10303,9 @@ sub do_rename_list { + } + + # set list status to pending if creation list is moderated +- if ($param->{'status'} eq 'pending') { +- &report::notice_report_web('pending_list',{},$param->{'action'},$list); +- } ++# if ($param->{'status'} eq 'pending') { ++# &report::notice_report_web('pending_list',{},$param->{'action'},$list); ++# } + + if ($in{'new_robot'} eq '$robot') { + $param->{'redirect_to'} = "$param->{'base_url'}$param->{'path_cgi'}/admin/$in{'new_listname'}"; diff --git a/6.1.9/patches/04_disable_copy_list.patch b/6.1.9/patches/04_disable_copy_list.patch new file mode 100644 index 0000000000000000000000000000000000000000..c751d560d6b8f2883ceced50c082540c52de45f4 --- /dev/null +++ b/6.1.9/patches/04_disable_copy_list.patch @@ -0,0 +1,16 @@ +diff --git a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +index 0ac9cbf..aa99c27 100644 +--- a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +@@ -10219,7 +10219,10 @@ sub _restrict_values { + + sub do_copy_list { + &wwslog('info', 'do_copy_list(%s,%s)', $in{'new_listname'}, $in{'new_robot'}); +- &do_rename_list('copy'); ++ # mysteriously reject copy list requests - this needs a real solution ++ &report::reject_report_web('intern','UUUUnable_to_rename_list', {'new_listname' => $in{'new_listname'}}, ++ $param->{'action'},$list,$param->{'user'}{'email'},$robot); ++ return undef; + } + + # in order to rename a list you must be list owner and you must be allowed to create new list diff --git a/6.1.9/patches/05_do_not_save_unauth_arcsearch_id.patch b/6.1.9/patches/05_do_not_save_unauth_arcsearch_id.patch new file mode 100644 index 0000000000000000000000000000000000000000..66fcb300eb8e9b24ec266108784e4162072215c1 --- /dev/null +++ b/6.1.9/patches/05_do_not_save_unauth_arcsearch_id.patch @@ -0,0 +1,25 @@ +diff --git a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +index aa99c27..3b4979b 100644 +--- a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +@@ -705,6 +705,7 @@ my %temporary_actions = ( 'logout' => 1, + 'rss' => 1, + 'wsdl' => 1, + 'redirect' => 1, ++ 'arcsearch_id' => 1, + ); + + ## Regexp applied on incoming parameters (%in) +@@ -7858,7 +7859,11 @@ sub do_remove_arc { + &wwslog('info', 'do_arcsearch_id(%s,%s,%s)', $param->{'list'},$in{'archive_name'},$in{'msgid'}); + + ## Access control +- return undef unless (defined &check_authz('do_arcsearch_id', 'web_archive.access')); ++ unless (defined &check_authz('do_arcsearch_id', 'web_archive.access')) { ++ $param->{'action'} = 'authorization_reject'; ++ $param->{'reason'} = 'web_archive_closed'; ++ return 1; ++ } + + use Marc::Search; + diff --git a/6.1.9/patches/06_disable_active_and_latest_lists.patch b/6.1.9/patches/06_disable_active_and_latest_lists.patch new file mode 100644 index 0000000000000000000000000000000000000000..8e27dcf2496f76931e7b3957545c38f45cef46bc --- /dev/null +++ b/6.1.9/patches/06_disable_active_and_latest_lists.patch @@ -0,0 +1,22 @@ +diff --git a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +index 3b4979b..8cfa0c7 100644 +--- a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +@@ -3919,6 +3919,8 @@ sub do_renewpasswd { + ## The list of latest created lists + sub do_latest_lists { + &wwslog('info', "do_latest_lists($in{'for'}, $in{'count'},$in{'topic'}, $in{'subtopic'})"); ++ # should try to actually fix this one day ++ return 0; + + unless (&do_lists()) { + &wwslog('err','do_latest_lists: error while calling do_lists'); +@@ -3979,6 +3981,8 @@ sub do_renewpasswd { + ## The list of the most active lists + sub do_active_lists { + &wwslog('info', "do_active_lists($in{'for'}, $in{'count'},$in{'topic'}, $in{'subtopic'})"); ++ # should try to actually fix this one day ++ return 0; + + unless (&do_lists()) { + &wwslog('err','do_active_lists: error while calling do_lists'); diff --git a/6.1.9/patches/08_quick_fix_sympa_distribute_crash.patch b/6.1.9/patches/08_quick_fix_sympa_distribute_crash.patch new file mode 100644 index 0000000000000000000000000000000000000000..2fc2b9b9c85e1a750350a764c1237b584cae1885 --- /dev/null +++ b/6.1.9/patches/08_quick_fix_sympa_distribute_crash.patch @@ -0,0 +1,22 @@ +diff --git a/sympa-6.1.9-src/src/lib/List.pm b/sympa-6.1.9-src/src/lib/List.pm +index 397c494..c633f34 100644 +--- a/sympa-6.1.9-src/src/lib/List.pm ++++ b/sympa-6.1.9-src/src/lib/List.pm +@@ -11411,6 +11411,7 @@ sub compute_topic { + my $charset = $part->head->mime_attr("Content-Type.Charset"); + $charset = MIME::Charset->new($charset); + if (defined $part->bodyhandle) { ++ if (defined $msg->bodyhandle) { + my $body = $msg->bodyhandle->as_string(); + my $converted; + eval { +@@ -11420,6 +11421,9 @@ sub compute_topic { + $converted = Encode::decode('US-ASCII', $body); + } + $mail_string .= $converted."\n"; ++ }else { ++ &do_log('err','message %s does not have a bodyhandle?',$msg_id); ++ } + } + } + } diff --git a/6.1.9/patches/09_fix_rename_lists_no_pending.patch b/6.1.9/patches/09_fix_rename_lists_no_pending.patch new file mode 100644 index 0000000000000000000000000000000000000000..46717b81dfe787bc12e291186b228c5bce822bb7 --- /dev/null +++ b/6.1.9/patches/09_fix_rename_lists_no_pending.patch @@ -0,0 +1,43 @@ +diff --git a/sympa-6.1.9-src/src/lib/admin.pm b/sympa-6.1.9-src/src/lib/admin.pm +index 1397fa3..b9460f3 100644 +--- a/sympa-6.1.9-src/src/lib/admin.pm ++++ b/sympa-6.1.9-src/src/lib/admin.pm +@@ -778,16 +778,16 @@ sub rename_list{ + } + + # set list status to pending if creation list is moderated +- if ($r_action =~ /listmaster/) { +- $list->{'admin'}{'status'} = 'pending' ; +- &List::send_notify_to_listmaster('request_list_renaming',$list->{'domain'}, +- {'list' => $list, +- 'new_listname' => $param{'new_listname'}, +- 'old_listname' => $old_listname, +- 'email' => $param{'user_email'}, +- 'mode' => $param{'mode'}}); +- $param{'status'} = 'pending'; +- } ++# if ($r_action =~ /listmaster/) { ++# $list->{'admin'}{'status'} = 'pending' ; ++# &List::send_notify_to_listmaster('request_list_renaming',$list->{'domain'}, ++# {'list' => $list, ++# 'new_listname' => $param{'new_listname'}, ++# 'old_listname' => $old_listname, ++# 'email' => $param{'user_email'}, ++# 'mode' => $param{'mode'}}); ++# $param{'status'} = 'pending'; ++# } + + ## Save config file for the new() later to reload it + $list->save_config($param{'user_email'}); +diff --git a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +index b47a9e8..a8fb952 100644 +--- a/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.9-src/wwsympa/wwsympa.fcgi.in +@@ -10259,6 +10259,7 @@ sub do_rename_list { + remote_addr => $param->{'remote_addr'}, + aliases => $param->{'aliases'}, + status => $param->{'status'}, ++ skip_authz => 1, + ); + + if ($result eq 'incorrect_listname') { diff --git a/6.1.9/patches/README b/6.1.9/patches/README new file mode 100644 index 0000000000000000000000000000000000000000..6ac80c24466cef361ca798162bac8736ec05f6c6 --- /dev/null +++ b/6.1.9/patches/README @@ -0,0 +1,37 @@ +Patches +======== + +01_fix_Sybase_conf.patch +------------------------ +see https://sourcesup.cru.fr/tracker/index.php?func=detail&aid=7326&group_id=23&atid=167 + +02_list_db_caching +------------------- +This patch creates a mysql table called list_table which caches some list config information. +This table is then used by wwsympa to get lists of lists so that wwsympa doesn't have to +traverse the lists data directory to get lists is lists. + +If this patch is installed to a new instance of sympa without any existing lists, no further +acount is necessary. + +If this patch is installed to an existing instance of sympa, you will need to load all +existing lists into the new table. To do so, run: +sympa.pl --sync_db_list + +03_rename_lists_no_pending +-------------------------- +prevents lists going in to 'pending' status if they are renamed. + +04_disable_copy_list +-------------------- +disables the ability to copy an existing list at the perl library level. this is also done on the +template level (which is not included in this patch). + +05_do_not_save_unauth_arcsearch_id +---------------------------------- +if a bad request comes in for arcsearch_id, do not save this in the sessions table. also, route the +request to show a proper unauthorized page. + +06 disable active and latest lists +----------------------------------- +rss requests to active_lists and latest_lists crash wwsympa. disable for now (should make a real patch one day) diff --git a/UPGRADE b/UPGRADE index 0fb9b4ce2573666efe610421690a77077635aaef..76e38ed81fcc4a18f950df39309ba4602e477c61 100644 --- a/UPGRADE +++ b/UPGRADE @@ -41,9 +41,32 @@ postfix stop 4-public-working-group 5-newsletter -10. check scenari files - scenari files describe permissions for subscribing and unsubscribing, among other things. we have some scenaris - disabled (for example, the scenari that closes unsubscribing). - the files in scenari/ in the repo should be the only scenaris enabled, like so: - scenari/etc/* -> /home/sympa/etc/scenari/ - scenari/default/* -> /home/smpa/default/scenari/ + to accomplish this, make sure that any directory called + 'create_list_templates' in /home/sympa only contains the above templates. + These are installed by the site-sympa puppet module. + +7. check scenari files + scenari files describe permissions for subscribing and unsubscribing, + among other things. we have some scenaris disabled (for example, the + scenari that closes unsubscribing). + The scenari files are deployed by the site-sympa puppet module, follow + the instructions there to update them for a new release. + +6. start sympa + +********************************************************************************* +**** the following steps should only be necessary if it is a clean install. ***** +**** the sympa upgrade process should preserve all of these customizations ***** +********************************************************************************* + +5a. docroot and css + a. make /home/sympa/docroot if it doesn't already exist + b. copy css/* from repo to /home/sympa/docroot if the css files are not already there + The css files are deployed by the site-sympa puppet module. + +5b. web and mail templates + The web_tt2 and mail_tt2 files are deployed by the site-sympa puppet module. + +5c. create_list_templates + the create_list_templates directory is in the site-sympa puppet module + diff --git a/sympa-6.1.20-src/mail_tt2/Makefile.am b/sympa-6.1.20-src/mail_tt2/Makefile.am deleted file mode 100644 index 918f0d3d1a91fa343449a5357b0f9258e2fe9624..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/Makefile.am +++ /dev/null @@ -1,72 +0,0 @@ -# Makefile - This Makefile does the mail templates installation -# RCS Identication ; $Revision: 10083 $ ; $Date: 2014-01-01 01:12:12 +0100 (mer. 01 janv. 2014) $ -# -# Sympa - SYsteme de Multi-Postage Automatique -# -# Copyright (c) 1997, 1998, 1999 Institut Pasteur & Christophe Wolfhugel -# 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 GIP RENATER -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -mailtemplate_DATA = authorization_reject.tt2 \ - bye.tt2 certif_warning.tt2 \ - command_report.tt2 \ - digest_plain.tt2 \ - digest.tt2 \ - d_install_shared.tt2 \ - d_reject_shared.tt2 \ - expire_deletion.tt2 \ - expire_warning1.tt2 \ - expire_warning2.tt2 \ - get_archive.tt2 \ - global_remind.tt2 \ - helpfile.tt2 \ - index_archive.tt2 \ - info_report.tt2 \ - invite.tt2 \ - list_created.tt2 \ - listeditor_notification.tt2 \ - listmaster_notification.tt2 \ - listowner_notification.tt2 \ - list_rejected.tt2 \ - lists.tt2 \ - list_unknown.tt2 \ - message_report.tt2 \ - moderate.tt2 \ - modindex.tt2 \ - reject.tt2 \ - remind.tt2 \ - removed.tt2 \ - request_auth.tt2 \ - review.tt2 \ - send_auth.tt2 \ - sendpasswd.tt2 \ - sendssopasswd.tt2 \ - stats_report.tt2 \ - summary.tt2 \ - urlized_part.tt2 \ - user_notification.tt2 \ - welcome.tt2 \ - which.tt2 \ - x509-user-cert-missing.tt2 \ - your_infected_msg.tt2 - -EXTRA_DIST = $(mailtemplate_DATA) - -install-data-hook: - (cd $(DESTDIR)$(webtemplatedir); \ - rm -f authorization_reject.tt2; \ - $(LN_S) -f ../mail_tt2/authorization_reject.tt2) diff --git a/sympa-6.1.20-src/mail_tt2/Makefile.in b/sympa-6.1.20-src/mail_tt2/Makefile.in deleted file mode 100644 index e583413ce4983e367fca174af26c86b534878886..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/Makefile.in +++ /dev/null @@ -1,421 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Makefile - This Makefile does the mail templates installation -# RCS Identication ; $Revision: 10083 $ ; $Date: 2014-01-01 01:12:12 +0100 (mer. 01 janv. 2014) $ -# -# Sympa - SYsteme de Multi-Postage Automatique -# -# Copyright (c) 1997, 1998, 1999 Institut Pasteur & Christophe Wolfhugel -# 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 GIP RENATER -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -subdir = mail_tt2 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(mailtemplatedir)" -mailtemplateDATA_INSTALL = $(INSTALL_DATA) -DATA = $(mailtemplate_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAT = @CAT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG = @CONFIG@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EXEEXT = @EXEEXT@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GROUP = @GROUP@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MAKEMAP = @MAKEMAP@ -MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ -MSGMERGE = @MSGMERGE@ -NEWALIASES = @NEWALIASES@ -NEWALIASES_ARG = @NEWALIASES_ARG@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -POD2MAN = @POD2MAN@ -POSTALIAS = @POSTALIAS@ -POSTMAP = @POSTMAP@ -POSTMAP_ARG = @POSTMAP_ARG@ -SED = @SED@ -SENDMAIL_ALIASES = @SENDMAIL_ALIASES@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USER = @USER@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -VIRTUAL_ALIASES = @VIRTUAL_ALIASES@ -WWSCONFIG = @WWSCONFIG@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -ac_ct_CC = @ac_ct_CC@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -arcdir = @arcdir@ -bindir = @bindir@ -bouncedir = @bouncedir@ -build_alias = @build_alias@ -confdir = @confdir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -defaultdir = @defaultdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -execcgidir = @execcgidir@ -expldir = @expldir@ -host_alias = @host_alias@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -initdir = @initdir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lockdir = @lockdir@ -mailtemplatedir = @mailtemplatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -modulesdir = @modulesdir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -piddir = @piddir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -scriptdir = @scriptdir@ -sharedstatedir = @sharedstatedir@ -spooldir = @spooldir@ -staticdir = @staticdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -webtemplatedir = @webtemplatedir@ -mailtemplate_DATA = authorization_reject.tt2 \ - bye.tt2 certif_warning.tt2 \ - command_report.tt2 \ - digest_plain.tt2 \ - digest.tt2 \ - d_install_shared.tt2 \ - d_reject_shared.tt2 \ - expire_deletion.tt2 \ - expire_warning1.tt2 \ - expire_warning2.tt2 \ - get_archive.tt2 \ - global_remind.tt2 \ - helpfile.tt2 \ - index_archive.tt2 \ - info_report.tt2 \ - invite.tt2 \ - list_created.tt2 \ - listeditor_notification.tt2 \ - listmaster_notification.tt2 \ - listowner_notification.tt2 \ - list_rejected.tt2 \ - lists.tt2 \ - list_unknown.tt2 \ - message_report.tt2 \ - moderate.tt2 \ - modindex.tt2 \ - reject.tt2 \ - remind.tt2 \ - removed.tt2 \ - request_auth.tt2 \ - review.tt2 \ - send_auth.tt2 \ - sendpasswd.tt2 \ - sendssopasswd.tt2 \ - stats_report.tt2 \ - summary.tt2 \ - urlized_part.tt2 \ - user_notification.tt2 \ - welcome.tt2 \ - which.tt2 \ - x509-user-cert-missing.tt2 \ - your_infected_msg.tt2 - -EXTRA_DIST = $(mailtemplate_DATA) -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mail_tt2/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign mail_tt2/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -install-mailtemplateDATA: $(mailtemplate_DATA) - @$(NORMAL_INSTALL) - test -z "$(mailtemplatedir)" || $(mkdir_p) "$(DESTDIR)$(mailtemplatedir)" - @list='$(mailtemplate_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(mailtemplateDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(mailtemplatedir)/$$f'"; \ - $(mailtemplateDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(mailtemplatedir)/$$f"; \ - done - -uninstall-mailtemplateDATA: - @$(NORMAL_UNINSTALL) - @list='$(mailtemplate_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(mailtemplatedir)/$$f'"; \ - rm -f "$(DESTDIR)$(mailtemplatedir)/$$f"; \ - done -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(mailtemplatedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-mailtemplateDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am uninstall-mailtemplateDATA - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-data-hook install-exec install-exec-am install-info \ - install-info-am install-mailtemplateDATA install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am uninstall-mailtemplateDATA - - -install-data-hook: - (cd $(DESTDIR)$(webtemplatedir); \ - rm -f authorization_reject.tt2; \ - $(LN_S) -f ../mail_tt2/authorization_reject.tt2) -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/sympa-6.1.20-src/mail_tt2/authorization_reject.tt2 b/sympa-6.1.20-src/mail_tt2/authorization_reject.tt2 deleted file mode 100644 index 5000ef297427202bf0e10be22e4938f52525ef52..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/authorization_reject.tt2 +++ /dev/null @@ -1,199 +0,0 @@ -[%#################################-%] -[%#### REJECTED AUTHORIZATION #####-%] -[%#################################-%] -[% IF reason == 'web_archive_closed' -%] -[%|loc()%]Web archives are closed.[%END%] - -[% ELSIF reason == 'web_archive_local_user_sub' -%] -[%|loc()%]Web archives are restricted to list subscribers and local domain users.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'web_archive_listmaster' -%] -[%|loc()%]Web archives are restricted to listmaster.[%END%] - -[% ELSIF reason == 'web_archive_owner' -%] -[%|loc()%]Web archives are restricted to list owners.[%END%] - -[% ELSIF reason == 'web_archive_subscriber' -%] -[%|loc()%]Web archives are restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'add_owner' -%] -[%|loc()%]Adding a user to the list is restricted to list owners.[%END%] - -[% ELSIF reason == 'add_closed' -%] -[%|loc()%]Adding a user to the list is not allowed.[%END%] - -[% ELSIF reason == 'create_list_local_user' -%] -[%|loc()%]List creation is restricted to local domain users.[%END%] - -[% ELSIF reason == 'create_list_listmaster' -%] -[%|loc()%]List creation is restricted to listmaster.[%END%] - -[% ELSIF reason == 'd_edit_subscriber' -%] -[%|loc()%]Shared document edition is restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'd_edit_owner' -%] -[%|loc()%]Shared document edition is restricted to list owners.[%END%] - -[% ELSIF reason == 'd_edit_subscriber_https' -%] -[%|loc()%]Shared document edition is restricted to list subscribers authenticated with user certificate.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'del_owner' -%] -[%|loc()%]Deleting a user from the list is restricted to list owners.[%END%] - -[% ELSIF reason == 'del_closed' -%] -[%|loc()%]It is not possible to delete a user from the list.[%END%] - -[% ELSIF reason == 'd_read_owner' -%] -[%|loc()%]Shared document reading is restricted to list owners.[%END%] - -[% ELSIF reason == 'd_read_subscriber' -%] -[%|loc()%]Shared document reading is restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'd_read_subscriber_https' -%] -[%|loc()%]Shared document reading is restricted to list subscribers authenticated with user certificat.[%END%] - -[% ELSIF reason == 'edit_list_closed' -%] -[%|loc()%]you are not allowed to edit list parameters.[%END%] - -[% ELSIF reason == 'edit_list_owner' -%] -[%|loc()%]List parameter editing is restricted to list owners.[%END%] - -[% ELSIF reason == 'global_remind_listmaster' -%] -[%|loc()%]The 'global remind' feature is restricted to listmaster.[%END%] - -[% ELSIF reason == 'info_subscriber' -%] -[%|loc()%]List information is restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'invite_closed' -%] -[%|loc()%]The 'invite' feature is unavailable.[%END%] - -[% ELSIF reason == 'invite_owner' -%] -[%|loc()%]The 'invite' feature is restricted to list owners.[%END%] - -[% ELSIF reason == 'invite_subscriber' -%] -[%|loc()%]The 'invite' feature is restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'remind_listmaster' -%] -[%|loc()%]The 'remind' feature is restricted to listmaster.[%END%] - -[% ELSIF reason == 'remind_owner' -%] -[%|loc()%]The 'remind' feature is restricted to list owners.[%END%] - -[% ELSIF reason == 'review_closed' -%] -[%|loc()%]The 'review' feature is unavailable.[%END%] - -[% ELSIF reason == 'review_local_user_sub' -%] -[%|loc()%]The 'review' feature is restricted to list subscribers and local domain users.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'review_listmaster' -%] -[%|loc()%]The 'review' feature is restricted to listmaster.[%END%] - -[% ELSIF reason == 'review_owner' -%] -[%|loc()%]The 'review' feature is restricted to list owners.[%END%] - -[% ELSIF reason == 'review_subscriber' -%] -[%|loc()%]The 'review' feature is restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'send_closed' -%] -[%|loc()%]Message distribution in this list is not allowed.[%END%] - -[% ELSIF reason == 'send_local_user' -%] -[%|loc()%]Message distribution in the list is restricted to local domain users.[%END%] - -[% ELSIF reason == 'send_local_user_sub' -%] -[%|loc()%]Message distribution for this list is restricted to list subscribers and local domain users.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'send_editor' -%] -[%|loc()%]Message distribution for this list is restricted to list moderators.[%END%] - -[% ELSIF reason == 'send_multipart' -%] -[%|loc()%]Multipart messages are not allowed in this list.[%END%] - -[% ELSIF reason == 'send_subscriber' -%] -[%|loc()%]Message distribution in the list is restricted to list subscribers.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'send_subscriber_smime' -%] -[%|loc()%]Message distribution for this list is restricted to list subscribers check S/MIME signature.[%END%] -[%|loc()%]If you are subscribed to the list with a different email address, you should either use that other email address or update your list membership with the new email address.[%END%] - -[% ELSIF reason == 'subscribe_closed' -%] -[%|loc()%]You are not allowed to subscribe to this list.[%END%] - -[% ELSIF reason == 'subscribe_local_user' -%] -[%|loc()%]Subscription to this list is restricted to local domain users.[%END%] - -[% ELSIF reason == 'subscribe_smime' -%] -[%|loc()%]Subscription to this list requires S/MIME signature.[%END%] - -[% ELSIF reason == 'topic_listmaster' -%] -[%|loc()%]Topics visibility is restricted to listmaster.[%END%] - -[% ELSIF reason == 'topic_identified' -%] -[%|loc()%]Topics visibility is restricted to identified users.[%END%] - -[% ELSIF reason == 'unsub_closed' -%] -[%|loc()%]It is not possible to unsubscribe from this list.[%END%] - -[% ELSIF reason == 'list_private_no_archive' -%] -[%|loc%]List is private: You can not read the archives.[%END%] - -[% ELSIF reason == 'list_private_no_browse' -%] -[%|loc%]List is private: You can not browse available files.[%END%] - -[% ELSIF reason == 'restricted_modindex' -%] -[%|loc%]The MODINDEX command is restricted to moderators.[%END%] - -[% ELSIF reason == 'action_owner_or_editor' -%] -[%|loc%]This action is restricted to list owners or moderators.[%END%] - -[% ELSIF reason == 'action_editor' -%] -[%|loc%]This action is restricted to moderators.[%END%] - -[% ELSIF reason == 'action_owner' -%] -[%|loc%]This action is restricted to list owners.[%END%] - -[% ELSIF reason == 'action_listmaster' -%] -[%|loc%]This action is restricted to listmasters.[%END%] - -[% ELSIF reason == 'action_listmaster_or_owner' -%] -[%|loc%]This action is restricted to listmasters or list owners.[%END%] - -[% ELSIF reason == 'action_listmaster_or_privileged_owner' -%] -[%|loc%]This action is restricted to listmasters or privileged list owners.[%END%] - -[% ELSIF reason == 'action_listmaster_or_privileged_owner_or_author' -%] -[%|loc%]This action is restricted to document author, listmasters or privileged list owners.[%END%] - -[% ELSIF reason == 'action_privileged_owner' -%] -[%|loc%]This action is restricted to privileged list owners.[%END%] - -[% ELSIF reason == 'edit_right' -%] -[%|loc(role,right)%]Right on this action is '%2' for a '%1'.[%END%] - -[% ELSIF reason == 'not_authenticated' -%] -[%|loc(role,right)%]You need to login.[%END%] - -[% ELSIF reason == 'edit_moderated' -%] -[%|loc(role,right)%]This action is impossible because editing is a moderated function.[%END%] - -[% ELSIF reason == 'dir_edit_moderated' -%] -[%|loc(role,right)%]This action is impossible for directories because editing is a moderated function.[%END%] - -[% ELSIF reason == 'list-no-open' -%] -[%|loc%]The list is closed.[%END%] - -[% ELSE -%] -[%|loc%]you are not allowed to perform this action.[%END%] - -[%- END -%] diff --git a/sympa-6.1.20-src/mail_tt2/bye.tt2 b/sympa-6.1.20-src/mail_tt2/bye.tt2 deleted file mode 100644 index 45194b38596f852b9b804e4bace514e39336c8ff..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/bye.tt2 +++ /dev/null @@ -1,5 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Unsubscribed from %1[%END%][%END%] - -[%|loc(user.email,list.name,list.host)%]Your email address (%1) has been removed from list %2@%3[%END%] -[%|loc%]bye ![%END%] diff --git a/sympa-6.1.20-src/mail_tt2/certif_warning.tt2 b/sympa-6.1.20-src/mail_tt2/certif_warning.tt2 deleted file mode 100644 index f30addddb9843c1c43178349ef733b4edc259ddb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/certif_warning.tt2 +++ /dev/null @@ -1,12 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc%]near expiration of your certificate[%END%][%END%] - -[%|loc(expiration_date)%]Your authentification certificate will expire on %1.[%END%] -[%|loc%]The certificate subject is:[%END%] -[% certificate_id %] - -[%|loc%]You won't receive the signed messages from your lists.[%END%] -[%|loc(conf.email,conf.host)%]To receive them again, renew your certificate with your certification authority -and send a signed message to %1@%2 -or -click: [%END%]mailto:[% conf.email %]@[% conf.host %]?subject=WHICH diff --git a/sympa-6.1.20-src/mail_tt2/command_report.tt2 b/sympa-6.1.20-src/mail_tt2/command_report.tt2 deleted file mode 100644 index 6ed89413cf0b522dda547e9b8de4bbb3da9b6cd4..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/command_report.tt2 +++ /dev/null @@ -1,194 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -Subject: [% FILTER qencode %][%|loc%]Results of your commands[%END%][%END%] -X-Loop: [% conf.sympa %] - -[%############################-%] -[%########## SUCCESS #########-%] -[%############################-%] -[% IF nb_notice -%] -[% IF nb_notice == 1 -%][%|loc%]Command has been performed:[%END%] - -[% ELSIF nb_notice > 1 -%][%|loc%]These commands have been performed:[%END%] - -[% END -%] -[%- FOREACH notice = notices -%] -> [% notice.cmd -%] - -> [% notice.entry %] -[% IF notice.entry == 'smime' -%] -[%|loc%]Your message signature was successfully verified using S/MIME.[%END%] - -[% ELSIF notice.entry == 'dkim' -%] -[%|loc%]Your message contain a DKIM signature. It was succesfully verified[%END%] - -[% ELSIF notice.entry == 'req_forward' -%] -[%|loc%]Your request to subscribe/unsubscribe has been forwarded to the list's -owners for approval. You will receive a notification when you have -been subscribed (or unsubscribed) to the list.[%END-%] - -[% ELSIF notice.entry == 'updated_info' -%] -[%|loc(notice.email,notice.listname)%]Information regarding user %1 has been updated for list %2.[%END%] - -[% ELSIF notice.entry == 'now_subscriber' -%] -[%|loc(notice.email,notice.listname)%]User %1 is now subscriber of list %2.[%END%] - -[% ELSIF notice.entry == 'invite' -%] -[%|loc(notice.email,notice.listname)%]User %1 has been invited to subscribe in list %2.[%END%] - -[% ELSIF notice.entry == 'remind' -%] -[%|loc(notice.total,notice.listname)%]Subscription reminder sent to each of %1 %2 subscribers.[%END%] - -[% ELSIF notice.entry == 'glob_remind' -%] -[%|loc(notice.count)%]The Reminder has been sent to %1 users.[%END%] - -[% ELSIF notice.entry == 'removed' -%] -[%|loc(notice.email,notice.listname)%]The user %1 has been removed from the list %2.[%END%] - -[% ELSIF notice.entry == 'config_updated' -%] -[%|loc(notice.listname)%]Your configuration regarding list %1 has been updated.[%END%] - -[% ELSIF notice.entry == 'finished' -%] -[%|loc(notice.cmd)%]Command '%1' found: ignoring end of message.[%END%] - -[% ELSIF notice.entry == 'no_message_to_moderate' -%] -[%|loc(notice.listname)%]There is no message to moderate for list '%1'.[%END%] - -[% END -%] -[% END -%] -[% END -%] -[%#####################-%] -[%# AUTHORIZATION ERROR-%] -[%#####################-%] -[% IF nb_auth -%] -[% IF before_auth %] - =============================== -[% END %] -[% IF nb_auth == 1 -%][%|loc%]Command has been rejected:[%END%] - -[% ELSIF nb_auth > 1 -%][%|loc%]These commands have been rejected:[%END%] - -[% END -%] -[%- FOREACH auth = auths -%] -> [% auth.cmd -%] - -[% SET reason = auth.entry -%] [% PROCESS authorization_reject.tt2 -%] -[% END -%] -[% END -%] -[%################-%] -[%#### USER ERROR-%] -[%################-%] -[% IF nb_user_err -%] -[% IF before_user_err %] - =============================== -[% END %] -[% IF nb_user_err == 1 -%][%|loc%]Command has failed:[%END%] - -[% ELSIF nb_user_err > 1 -%][%|loc%]These commands have failed:[%END%] - -[% END -%] -[%- FOREACH u_err = user_errors -%] -> [% u_err.cmd -%] - -[% IF u_err.entry == 'not_understood' -%] - [%|loc%]Command not understood: ignoring end of message.[%END%] - -[% ELSIF u_err.entry == 'no_verify_sign' -%] - [%|loc%]Your message was not a multipart/signed message or Sympa could not verify the signature -(be aware that Sympa can't check signature if you use the subject header to write a command).[%END-%] - -[% ELSIF u_err.entry == 'error_syntax' -%] - [%|loc%]Command syntax error.[%END%] - -[% ELSIF u_err.entry == 'no_existing_list' -%] - [%|loc(u_err.listname)%]List '%1' does not exist.[%END%] - -[% ELSIF u_err.entry == 'no_subscriber_preference' -%] - [%|loc(u_err.listname)%]%1 mailing list does not provide subscriber preferences.[%END%] - -[% ELSIF u_err.entry == 'your_email_not_found' -%] - [%|loc(u_err.email,u_err.listname)%]Your e-mail address %1 has not been found in the list %2. Maybe -you subscribed from a different e-mail address ?[%END-%] - -[% ELSIF u_err.entry == 'email_not_found' -%] - [%|loc(u_err.email,u_err.listname)%]E-mail address %1 has not been found in the list %2.[%END%] - -[% ELSIF u_err.entry == 'no_digest' -%] - [%|loc(u_err.listname)%]List %1 does not accept the DIGEST mode. -Your configuration regarding this command has not been updated.[%END-%] - -[% ELSIF u_err.entry == 'available_reception_mode' -%] - [%|loc(u_err.listname)%]List %1 allows only these reception modes: [%END -%] -[%- FOREACH m = u_err.reception_modes -%] -[%- IF loop.size >= 2 && loop.count == loop.size -%] -[%|loc%], and [%END%][%|optdesc('reception',1)%][% m %][%END-%] -[%- ELSIF loop.count > 1 -%] -[%|loc%], [%END%][%|optdesc('reception',1)%][% m %][%END-%] -[%- ELSE -%] -[%|optdesc('reception',1)%][% m %][%END-%] -[%- END -%] -[%- END -%] - -[% ELSIF u_err.entry == 'empty_archives' -%] - [%|loc()%]This list archive is empty.[%END%] - -[% ELSIF u_err.entry == 'no_required_file' -%] - [%|loc%]Required file does not exist.[%END%] - -[% ELSIF u_err.entry == 'no_subscriber' -%] - [%|loc(u_err.listname)%]List %1 has no subscriber.[%END%] - -[% ELSIF u_err.entry == 'already_subscriber' -%] - [%|loc(u_err.email,u_err.listname)%]The User '%1' is already subscriber of list '%2'.[%END%] - -[% ELSIF u_err.entry == 'wrong_email_confirm' -%] - [%|loc(u_err.command)%]The authentication process failed. -You probably confirmed your %1 using a different -email address. Please try using your canonical address.[%END-%] - -[% END -%] -[% END -%] -[% END -%] -[%###################-%] -[%#### INTERN ERROR -%] -[%###################-%] -[% IF nb_intern_err %] -[% IF before_intern_err %] - =============================== -[% END %] -[% IF nb_intern_err == 1 -%][%|loc%]Command has failed because of an internal server error:[%END%] - -[% ELSIF nb_intern_err > 1 -%][%|loc%]These commands have failed because of an internal server error:[%END%] - -[% END -%] -[%- FOREACH i_err = intern_errors -%] -> [% i_err.cmd %] - -[% END -%] -[% END -%] -[%############################-%] -[%########## GLOBALS #########-%] -[%############################-%] -[% IF nb_global %] -[%- FOREACH glob = globals -%] - - ========================================== - -[% IF glob.entry == 'error_content_type' -%] -[%|loc%]Ignoring message body not in text/plain, please use text/plain only (or put your command in the subject).[%END-%] - -[% ELSIF glob.entry == 'no_cmd_found' -%] -[%|loc%]No command found in message.[%END%] - -[% ELSIF glob.entry == 'intern_error' -%] -[%|loc%]Ignoring message because of an internal server error.[%END%] - -[% ELSIF glob.entry == 'no_existing_list' -%] -[%|loc(glob.listname)%]List '%1' does not exist.[%END%] -[% END -%] -[% END -%] -[% END -%] - ------------==========================================----------- - -[%|loc(conf.wwsympa_url)%]For further information, check the mailing list web site %1[%END%] diff --git a/sympa-6.1.20-src/mail_tt2/d_install_shared.tt2 b/sympa-6.1.20-src/mail_tt2/d_install_shared.tt2 deleted file mode 100644 index 9b459ab8870dcc50578facd5c5e439418881a362..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/d_install_shared.tt2 +++ /dev/null @@ -1,7 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc%]Your document has been installed.[%END%][%END%] - -[%|loc(filename,list.name,list.host,installed_by)%]Your document %1 for list %2@%3 -has been installed by %4 list editor.[%END%] - -[%|loc%]The list document repository:[%END%] [% conf.wwsympa_url %]/d_read/[% list.name %] diff --git a/sympa-6.1.20-src/mail_tt2/d_reject_shared.tt2 b/sympa-6.1.20-src/mail_tt2/d_reject_shared.tt2 deleted file mode 100644 index c5d4244eabbe501e51e60ea59a84b3cc595968b2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/d_reject_shared.tt2 +++ /dev/null @@ -1,5 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc%]Your document has been rejected.[%END%][%END%] - -[%|loc(filename,list.name,list.host,rejected_by)%]Your document %1 for list %2@%3 -has been rejected by %4 list editor.[%END%] diff --git a/sympa-6.1.20-src/mail_tt2/digest.tt2 b/sympa-6.1.20-src/mail_tt2/digest.tt2 deleted file mode 100644 index 47a21649548b007686a327022b1476073bf86af6..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/digest.tt2 +++ /dev/null @@ -1,41 +0,0 @@ -From: [% fromlist %] -To: [% to %] -Reply-to: [% replyto %] -Subject: [% FILTER qencode %][%|loc(list.name,date)%]%1 Digest %2[%END%][% IF total_group > 1 %][%|loc(current_group,total_group)%] (%1/%2)[%END%][% END %][%END%] -Content-Type: multipart/mixed; boundary="[% boundary1 %]" - ---[% boundary1 %] -Content-Disposition: inline - -[%|loc(list.name,date)%]%1 Digest %2[%END%] - -[%|loc%]Table of contents:[%END%] - -[%|wrap(0,4)%][% FOREACH m = msg_list -%] -[% m.id %]. [% m.subject %] - [% m.from %] -[% END %][%END#wrap%] - ---[% boundary1 %] -Content-Type: multipart/digest; boundary="[% boundary2 %]" -Mime-Version: 1.0 - -This is a multi-part message in MIME format... - -[% FOREACH m = msg_list -%] ---[% boundary2 %] -Content-Type: message/rfc822 -Content-Disposition: inline -X-Sympa-Attach: yes - -[% m.full_msg %] - -[% END %] ---[% boundary2 %]-- - ---[% boundary1 %] -Content-Disposition: inline - -[%|loc(list.name,date)%]End of %1 Digest %2[%END%] - ---[% boundary1 %]-- - diff --git a/sympa-6.1.20-src/mail_tt2/digest_plain.tt2 b/sympa-6.1.20-src/mail_tt2/digest_plain.tt2 deleted file mode 100644 index ae45ce1c3ebc8b725c3f78d0a9d00e7b4633a2e2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/digest_plain.tt2 +++ /dev/null @@ -1,29 +0,0 @@ -From: [% fromlist %] -To: [% to %] -Reply-to: [% replyto %] -Subject: [% FILTER qencode %][%|loc(list.name,date)%]%1 Digest %2[%END%][% IF total_group > 1 %][%|loc(current_group,total_group)%] (%1/%2)[%END%][% END %][%END%] -X-Sympa-NoWrap: yes - -[%|loc(list.name,date)%]%1 Digest %2[%END%] - -[%|loc%]Table of contents:[%END%] - -[%|wrap(0,2)%][% FOREACH m = msg_list -%] -* [% m.id %] - [% m.subject %] - [% m.from %] -[% END %][%END#wrap%] ----------------------------------------------------------------------- - -[% FOREACH m = msg_list -%] -[%|wrap(0,1)%]Message-ID: <[% m.id %]> -Date: [% m.date %] -From: [% m.from %] -Subject: [% m.subject %][%END#wrap%] - -[% m.plain_body %] - ------------------------------- -[% END %] -********************************************* - -[%|loc(list.name,date)%]End of %1 Digest %2[%END%] - diff --git a/sympa-6.1.20-src/mail_tt2/expire_deletion.tt2 b/sympa-6.1.20-src/mail_tt2/expire_deletion.tt2 deleted file mode 100644 index 6d5059e1c706d3f1ecba1a261a187848dd052c78..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/expire_deletion.tt2 +++ /dev/null @@ -1,9 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Removed from %1[%END%][%END%] - -[%|loc(user.email,list.name,list.host)%]Your address (%1) has been removed from list -%2@%3 -because you didn't confirm your subscription.[%END%] - -[%|loc%]You can subscribe again:[%END%] -[% FILTER escape_url %]mailto:[%conf.email%]@[%conf.host%]?subject=sub [%list.name%][% END %] diff --git a/sympa-6.1.20-src/mail_tt2/expire_warning1.tt2 b/sympa-6.1.20-src/mail_tt2/expire_warning1.tt2 deleted file mode 100644 index 0e91859d51213a46549d87975a37000a3105cbe2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/expire_warning1.tt2 +++ /dev/null @@ -1,9 +0,0 @@ -From: [% conf.email %]@[% conf.host %] -Subject: [% FILTER qencode %][%|loc(list.name)%]resubscription to %1[%END%][%END%] - -[%|loc(list.name,list.host,user.email)%]You have been subscriber of list %1@%2 with email %3 for 1 year or more;[%END%] -mailto:[% conf.email %]@[% conf.host %]?subject=sub%20[% list.name %] - -[%|loc%]Everything about this list: [%END%][% conf.wwsympa_url %]/info/[% list.name %] -[%|loc%]Unsubscription:[%END%] -mailto:[% conf.email %]@[% conf.host %]?subject=sig%20[% list.name %]%20[% user.email %] diff --git a/sympa-6.1.20-src/mail_tt2/expire_warning2.tt2 b/sympa-6.1.20-src/mail_tt2/expire_warning2.tt2 deleted file mode 100644 index 8cffc3a64fc65df454194e890ce063636eaf27bb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/expire_warning2.tt2 +++ /dev/null @@ -1,9 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]resubscription to %1[%END%][%END%] - -[%|loc(list.name,list.host,user.email)%]You have been subscriber of list %1@%2 with email %3 for 1 year or more;[%END%] -mailto:[% conf.email %]@[% conf.host %]?subject=sub%20[% list.name %] - -[%|loc%]Everything about this list: [%END%][% conf.wwsympa_url %]/info/[% list.name %] -[%|loc%]Unsubscription:[%END%] -[% FILTER escape_url %]mailto:[%conf.email%]@[%conf.host%]?subject=sig [%list.name%] [%user.email%][% END %] diff --git a/sympa-6.1.20-src/mail_tt2/get_archive.tt2 b/sympa-6.1.20-src/mail_tt2/get_archive.tt2 deleted file mode 100644 index 2e6bb5344da4c0bd0a7c865189d8cf337cb71b92..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/get_archive.tt2 +++ /dev/null @@ -1,37 +0,0 @@ -From: [% from %] -To: [% to %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Archive of %1, file %2[%END%][%END%] -Content-Type: multipart/mixed; boundary="[% boundary1 %]" - ---[% boundary1 %] -Content-Disposition: inline - -[%|loc%]Table of contents:[%END%] - -[%|wrap(0,4)%][% FOREACH m = msg_list -%] -[% m.id %]. [% m.subject %] - [% m.from %] -[% END %][%END#wrap%] - ---[% boundary1 %] -Content-Type: multipart/digest; boundary="[% boundary2 %]" -Mime-Version: 1.0 - -This is a multi-part message in MIME format... - -[% FOREACH m = msg_list -%] ---[% boundary2 %] -Content-Type: message/rfc822 -Content-Disposition: inline -X-Sympa-Attach: yes - -[% m.full_msg %] - -[% END %] ---[% boundary2 %] -Content-Disposition: inline - -[%|loc(list.name,date)%]End of digest for list %1 - %2[%END%] - ---[% boundary2 %]-- - ---[% boundary1 %]-- diff --git a/sympa-6.1.20-src/mail_tt2/global_remind.tt2 b/sympa-6.1.20-src/mail_tt2/global_remind.tt2 deleted file mode 100644 index 9b10c0d225ed50bed84679b79c8687d7a11e96d8..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/global_remind.tt2 +++ /dev/null @@ -1,13 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc%]Subscription summary[%END%][%END%] - -[%|loc(user.email)%]Summary of your subscription (using the e-mail %1).[%END%] -[%|loc%]If you want to unsubscribe from some list, please save this mail.[%END%] - -[%|loc%]For each list here is a mail address to use if you want to unsubscribe.[%END%] - --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -[%|wrap(0,4)%][% FOREACH l = lists -%] -[% l %] [% FILTER escape_url %]mailto:[%conf.sympa%]?subject=sig [%l%] [%user.email%][% END %] -[% END %][%END#wrap%] --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/sympa-6.1.20-src/mail_tt2/helpfile.tt2 b/sympa-6.1.20-src/mail_tt2/helpfile.tt2 deleted file mode 100644 index 8c704d051cf5c2cc38bc8e841d16a3635ddffc1b..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/helpfile.tt2 +++ /dev/null @@ -1,62 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc%]User guide[%END%][%END%] - - SYMPA -- Systeme de Multi-Postage Automatique -[%|loc%] (Automatic Mailing System)[%END%] - -[%|loc%] User's Guide[%END%] - - -[%|loc%]SYMPA is an electronic mailing-list manager that automates list management functions such as subscriptions, moderation, and archive management.[%END%] - -[%|loc(conf.sympa)%]All commands must be sent to the electronic address %1[%END%] - -[%|loc%]You can put multiple commands in a message. These commands must appear in the message body and each line must contain only one command.[%END%] - -[%|loc%]Available commands are:[%END%] -[%|wrap(0,39)%] - [%|loc%]HELp * This help file[%END%] - [%|loc%]INFO <list> * Information about a list[%END%] - [%|loc%]LISts * Directory of lists managed on this node[%END%] - [%|loc%]REView <list> * Displays the subscribers to <list>[%END%] - [%|loc%]WHICH * Displays which lists you are subscribed to[%END%] - [%|loc%]SUBscribe <list> <name> * To subscribe or to confirm a subscription to <list>.[%END%] - - [%|loc%]UNSubscribe <list> <EMAIL> * To quit <list>. <EMAIL> is an optional email address, useful if different from your "From:" address.[%END%] - [%|loc%]UNSubscribe * <EMAIL> * To quit all lists.[%END%] - - [%|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>|* 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%] - [%|loc%]SET <list>|* CONCEAL * To become unlisted (hidden subscriber address)[%END%] - [%|loc%]SET <list>|* NOCONCEAL * Subscriber address visible via REView[%END%] - - - [%|loc%]INDex <list> * <list> archive file list[%END%] - [%|loc%]GET <list> <file> * To get <file> of <list> archive[%END%] - [%|loc%]LAST <list> * Used to received the last message from <list>[%END%] - [%|loc%]INVITE <list> <email> * Invite <email> for subscription in <list>[%END%] - [%|loc%]CONFIRM <key> * Confirmation for sending a message (depending on the list configuration)[%END%] - [%|loc%]QUIT * Indicates the end of the commands (to ignore a signature)[%END%] -[%END#wrap%] -[% IF is_owner -%] --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -[%|loc%]The following commands are available only for lists owners or moderators:[%END%] -[%|wrap(0,39)%] - [%|loc%]ADD <list> user@host Full name * To add a user to a list[%END%] - [%|loc%]DEL <list> user@host * To delete a user from a list[%END%] - [%|loc%]STATS <list> * To consult the statistics for <list>[%END%] - - [%|loc%]REMIND <list> * Send a reminder message to each subscriber (this is a way to inform anyone what is his real subscribing email).[%END%] -[%END#wrap%][% END %] -[% IF is_editor -%] -[%|wrap(0,39)%] - [%|loc%]DISTribute <list> <key> * Moderation: to validate a message[%END%] - [%|loc%]REJect <list> <key> * Moderation: to reject a message[%END%] - [%|loc%]MODINDEX <list> * Moderation: to view the list of messages to moderate[%END%] -[%END#wrap%][% END %] - -[%|loc%]Powered by Sympa[%END%] [% conf.version %][%|loc%]:[%END%] http://www.sympa.org diff --git a/sympa-6.1.20-src/mail_tt2/index_archive.tt2 b/sympa-6.1.20-src/mail_tt2/index_archive.tt2 deleted file mode 100644 index 7226982a7a2c1cbb4f0cf57fda5cff93918869cb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/index_archive.tt2 +++ /dev/null @@ -1,6 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc(list.name)%]Archives index of list %1[%END%][%END%] - -[% FOREACH a = archives -%] -[% a -%] -[% END -%] diff --git a/sympa-6.1.20-src/mail_tt2/invite.tt2 b/sympa-6.1.20-src/mail_tt2/invite.tt2 deleted file mode 100644 index 85a64adeea32970ee9f5b968278b2f6d472161be..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/invite.tt2 +++ /dev/null @@ -1,12 +0,0 @@ -From: [% requested_by %] -Reply-To: [% conf.sympa %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Invitation to join list %1[%END%][%END%] - -[%|loc(list.subject)%]This list is about %1, so you are probably concerned.[%END%] - -[%|loc%]To subscribe just hit the following link:[%END%] -[% url %] - -[%|loc(conf.sympa,subject)%]Or send a message to %1 with subject: "sub %2"[%END%] - -[%|loc%]If you don't want to subscribe just ignore this message.[%END%] diff --git a/sympa-6.1.20-src/mail_tt2/list_created.tt2 b/sympa-6.1.20-src/mail_tt2/list_created.tt2 deleted file mode 100644 index c81442e51564ffdf590c36df7d9c9524f32095c3..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/list_created.tt2 +++ /dev/null @@ -1,10 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc(list.name)%]%1 mailing list creation[%END%][%END%] - -[%|loc(list.name,list.host)%]%1@%2 mailing list has been activated by listmaster.[%END%] - -[%|loc%]homepage[%END%] -[% conf.wwsympa_url %]/info/[% list.name %] - -[%|loc(list.name)%]%1 admin page[%END%] -[% conf.wwsympa_url %]/admin/[% list.name %] diff --git a/sympa-6.1.20-src/mail_tt2/list_rejected.tt2 b/sympa-6.1.20-src/mail_tt2/list_rejected.tt2 deleted file mode 100644 index 286e0dc00ab0907600c56c8558ef974441eb003f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/list_rejected.tt2 +++ /dev/null @@ -1,4 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc(list.name)%]Rejected mailing list %1 creation[%END%][%END%] - -[%|loc(list.name,list.host)%]%1@%2 mailing list has been rejected by listmaster.[%END%] diff --git a/sympa-6.1.20-src/mail_tt2/list_unknown.tt2 b/sympa-6.1.20-src/mail_tt2/list_unknown.tt2 deleted file mode 100644 index 1c0d4140a7b62e474fae3731956239a9ea26c63a..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/list_unknown.tt2 +++ /dev/null @@ -1,39 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -Subject: [% FILTER qencode %][%|loc%]List unknown[%END%][%END%] -Content-Type: multipart/report; report-type=delivery-status; - boundary="[% boundary %]" - ---[% boundary %] -Content-Description: Notification - -[%|loc%]This is an automatic response sent by Sympa Mailing Lists Manager.[%END%] - -[%|loc%]The following address is not a known mailing list:[%END%] - - [% list %] - -[%|loc%]To find out the correct listname, ask for this server's lists directory:[%END%] - - mailto:[% conf.email %]@[% conf.host %]?subject=WHICH - -[%|loc(conf.listmaster_email,conf.host)%]For further information, please contact %1@%2[%END%] - ---[% boundary %] -Content-Type: message/delivery-status - -Reporting-MTA: dns; [% conf.host %] -Arrival-Date: [% date %] - -Final-Recipient: rfc822; [% list %] -Action: failed -Status: 5.1.1 -Remote-MTA: dns; [% conf.host %] -Diagnostic-Code: List unknown - ---[% boundary %] -Content-Type: text/rfc822-headers - -[% header %] - ---[% boundary %]-- diff --git a/sympa-6.1.20-src/mail_tt2/listeditor_notification.tt2 b/sympa-6.1.20-src/mail_tt2/listeditor_notification.tt2 deleted file mode 100644 index 0e4cf55d14ed7551bbfc0f735f3bd8959ab303cb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/listeditor_notification.tt2 +++ /dev/null @@ -1,27 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -[% IF type == 'shared_moderated' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Shared document to be approved for %1[%END%][%END%] - -[% IF many_files %] -[%|loc(list.name,filename,who,conf.wwsympa_url)%]There are new shared documents in list %1: - %2 - - from %3 - -To moderate these document: -%4/modindex/%1[% END %] - -[% ELSE %] -[%|loc(list.name,filename,who,conf.wwsympa_url)%]There is a new shared document in list %1: - %2 from %3 - -To moderate this document: -%4/modindex/%1 - [% END %][% END %] - -[% ELSE -%] -Subject: [% FILTER qencode %][%|loc(list.name,type)%]Moderators List %1 / %2[%END%][%END%] - -[% param0 %] -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/listmaster_notification.tt2 b/sympa-6.1.20-src/mail_tt2/listmaster_notification.tt2 deleted file mode 100644 index b7f63e4f07759777d87e1b7646e14ea7cd58f7fc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/listmaster_notification.tt2 +++ /dev/null @@ -1,401 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% FILTER qencode %][%|loc%]Listmaster[%END%] <[% to %]>[%END%] -[% IF type == 'request_list_creation' -%] -Subject: [% FILTER qencode %][%|loc(list.name,list.host,email)%]List "%1@%2" creation request from %3[%END%][%END%] - -[%|loc(email,list.name)%]%1 requested creation of list "%2"[%END%] - -[% list.name %]@[% list.host %] -[% list.subject %] -[% conf.wwsympa_url %]/info/[% list.name %] - -[%|loc%]To activate/delete this mailing list:[%END%] -[% conf.wwsympa_url %]/ticket/[%one_time_ticket%] - -[%- ELSIF type == 'request_list_renaming' -%] -[%- IF mode == 'copy' -%] -Subject: [% FILTER qencode %][%|loc(new_listname)%]%1 mailing list creation[%END%][%END%] - -[%|loc(email,old_listname,new_listname)%]%1 has copied list "%2" as a new list "%3"[%END-%] -[%- ELSE -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List "%1" renaming[%END%][%END%] - -[%|loc(email,old_listname,new_listname)%]%1 has renamed list "%2" to "%3"[%END%] -[% END %] - -[%|loc%]To activate/delete this mailing list:[%END%] -[% conf.wwsympa_url %]/ticket/[%one_time_ticket%] - -[% ELSIF type == 'no_db' -%] -Subject: [% FILTER qencode %][%|loc%]No DataBase[%END%][%END%] - -[%|loc(db_name)%]Cannot connect to database %1, still trying...[%END%] - - -[% ELSIF type == 'missing_dbd' -%] -Subject: [% FILTER qencode %][%|loc(db_type)%]No DataBase Driver for %1[%END%][%END%] - -[%|loc(db_type)%]No Database Driver installed for %1; you should download and install DBD::%1 from CPAN.[%END%] - - -[% ELSIF type == 'crash' -%] -Subject: [% FILTER qencode %][%|loc%]Previous process crashed[%END%][%END%] - -[%|loc%]Previous process has died unexpectedly.[%END%] -[%|loc(crash_date)%]Date of crash: %1[%END%] -[%|loc%]Errors:[%END%] - -[% FOREACH err IN crash_err%] -[% err %] -[% END %] - -[%|loc%]Check log file for further details.[%END%] - -[% ELSIF type == 'upgrade_failed' -%] -Subject: [% FILTER qencode %][%|loc%]Upgrade procedures failed[%END%][%END%] - -[%|loc%]Sympa encountered the following error while running upgrade procedures: [%END%] - [%error%] - -[%|loc%]Check log file for further details.[%END%] - -[% ELSIF type == 'db_struct_updated' -%] -Subject: [% FILTER qencode %][%|loc%]Database structure updated[%END%][%END%] - -[%|loc(db_name)%]The database structure has been updated; check log file for further details: [%END%] -[% FOREACH report_item IN report -%] - [% report_item %] -[% END %] - -[% ELSIF type == 'css_updated' -%] -Subject: [% FILTER qencode %][%|loc%]CSS files have been updated[%END%][%END%] - -[%|loc%]Static CSS files have been updated. Check log file for details.[%END%] - - -[% ELSIF type == 'db_restored' -%] -Subject: [% FILTER qencode %][%|loc%]DataBase connection restored[%END%][%END%] - -[%|loc(db_name)%]Connection to database %1 restored.[%END%] - - -[% ELSIF type == 'bulk_error' -%] -Subject: [% FILTER qencode %][%|loc%]Bulk mailer error[%END%][%END%] - -[%|loc(listname)%]Sympa failed to store a message for list %1 in the bulk mailer. You should check log files !![%END%] - - -[% ELSIF type == 'loop_command' -%] -Subject: [% FILTER qencode %][%|loc%]Loop detected[%END%][%END%] -MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="[% boundary %]" - ---[% boundary %] -Content-Disposition: inline - -[%|loc%]A loop has been detected with the following message[%END%] - ---[% boundary %] -Content-Type: message/rfc822 -Content-Transfer-Encoding: 8bit -Content-Disposition: inline -X-Sympa-Attach: yes - -[% INSERT $msg IF msg %] - ---[% boundary %]-- - - -[% ELSIF type == 'virus_scan_failed' -%] -Subject: [% FILTER qencode %][%|loc%]Antivirus scan failed[%END%][%END%] - -[%|loc%]The antivirus scan has failed while processing the following file:[%END%] - [% filename %] - -[%|loc%]The returned error message:[%END%] - [% error_msg %] - - -[% ELSIF type == 'parameter_error' -%] -Subject: [% FILTER qencode %][%|loc%]Parameter error[%END%][%END%] - -[%|loc(par_name,par_value)%]The value for parameter %1 was badly defined: %2[%END%] -[%|loc(action)%]%1 impossible.[%END%] -[%|loc%]See logs for more details.[%END%] - -[% ELSIF type == 'unable_to_create_dir' -%] -Subject: [% FILTER qencode %][%|loc%]Unable to create directory[%END%][%END%] - -[%|loc(dir)%]Sympa could not create directory %1[%END%] -[%|loc%]See logs for more details.[%END%] - -[% ELSIF type == 'archiving_failed' -%] -Subject: [% FILTER qencode %][%|loc%]A message archiving failed[%END%][%END%] - -[%|loc(file,bad)%]Sympa could not archive message '%1'. Moving it into directory '%2'.[%END%] -[%|loc%]See logs for more details.[%END%] - -[% ELSIF type == 'bounce_management_failed' -%] -Subject: [% FILTER qencode %][%|loc%]A bounce management failed[%END%][%END%] - -[%|loc(file,bad)%]Sympa could not handle bounce message '%1'. Moving it into directory '%2'.[%END%] - -[%|loc(error)%]Error: %1[%END%] -[%|loc%]See logs for more details.[%END%] - -[% ELSIF type == 'edit_list_error' -%] -Subject: [% FILTER qencode %][%|loc%]incorrect format of edit_list.conf[%END%][%END%] - -[%|loc%]edit_list.conf format has changed: -'default' is no more accepted for a population.[%END%] - -[%|loc(param0)%]Refer to documentation to adapt %1.[%END%] -[%|loc(param0)%]Until then we recommend your remove %1; -default configuration will be used.[%END%] - -[% ELSIF type == 'sync_include_failed' -%] -Subject: [% FILTER qencode %][%|loc(listname)%]subscribers update failed for list %1[%END%][%END%] - -[%|loc%]Sympa could not include subscribers from the following external data sources:[%END%] - -[% FOREACH e IN errors %] -[%|loc(e.name,e.type)%]Include of datasource %1 (type %2) failed.[% END %] -[% END %] - -[%|loc%]Check Sympa log files for more precise information[%END%] - - -[% ELSIF type == 'sync_include_admin_failed' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]admins update failed for list %1[%END%][%END%] - -[%|loc%]Sympa could not include admins from external data sources; the database or LDAP directory might be unreachable.[%END%] -[%|loc%]Check Sympa log files for more precise information[%END%] - -[% ELSIF type == 'no_owner_defined' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0)%]No owner is defined for list %1.[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - - -[% ELSIF type == 'listowner_email_changed' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]List owner/editor email changes[%END%][%END%] - -[%|loc(previous_email,new_email)%]Member %1 has changed his owner/editor email address to %2. This change has been performed for the following lists:[%END%] -[% FOREACH updated_list IN updated_lists -%] -[% updated_list %] -[% END %] - - -[% ELSIF type == 'failed_to_change_included_admin' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List %1: Failed to change admin email address[%END%][%END%] - -[%|loc(current_email,new_email,datasource)%]Admin %1 could not change his admin email address (new email address is %2) because he is included via a the following data sources: %3. - -If you are able to do so, you should probably update these data sources with this person's new email address.[%END%] - - -[% ELSIF type == 'error_copy_file' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0,param1)%]Errors occured while copying family %2 file in list %1 directory.[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - - -[% ELSIF type == 'no_respect_rules_family' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0,param1)%]List %1 configuration does not respect family %2 rules.[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - -[% ELSIF type == 'no_check_rules_family' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0,param1)%]Sympa could not check family %2 rules with list %1 param_constraint.conf file.[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - - -[% ELSIF type == 'param_constraint_conf_error' -%] -Subject: [% FILTER qencode %][%|loc%]errors in param_constraint.conf file[%END%][%END%] - -[%|loc(param0)%]Error(s) found in the file %1.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - - -[% ELSIF type == 'param_constraint_conf_error' -%] -Subject: [% FILTER qencode %][%|loc%]errors in param_constraint.conf file[%END%][%END%] - -[%|loc(param0)%]Error(s) found in the file %1.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - -[% ELSIF type == 'file_removed' -%] -Subject: [% FILTER qencode %][%|loc%]File removed[%END%][%END%] - -[%|loc(param0)%]The following file has been removed: %1[%END%] -[%|loc(param1)%]A backup of the file has been made: %1[%END%] - - -[% ELSIF type == 'no_list_family' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0,param1)%]Sympa could not load family %2 for list %1.[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - -[% ELSIF type == 'instantiation_family' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0,param1)%]Failed to instantiate family %2 for list %1[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - -[% ELSIF type == 'modify_list_family' -%] -Subject: [% FILTER qencode %][%|loc(param0)%]list %1 in status error_config[%END%][%END%] - -[%|loc(param0,param1)%]Sympa could not modify list %1 (Family %2)[%END%] -[%|loc%]The list status has been set to error_config.[%END%] -[%|loc%]Check Sympa log files for more precise information.[%END%] - - -[% ELSIF type == 'automatic_bounce_management' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List %1 automatic bounce management[%END%][%END%] - -[% IF action == 'notify_bouncers' -%] -[%|loc(total,list.name)%]Because we received MANY non-delivery reports, the %1 subscribers listed below have been -notified that they might be removed from list %2:[%END%] -[% ELSIF action == 'remove_bouncers' -%] -[%|loc(total,list.name)%]Because we received MANY non-delivery reports, the %1 subscribers listed below have been -removed from list %2:[%END%] -[% ELSIF action == 'none' -%] -[%|loc(total,list.name)%]Because we received MANY non-delivery reports, the %1 subscribers listed below have been -selected by Sympa as severe bouncing addresses:[%END%] -[%END%] - -[% FOREACH user IN user_list -%] -[% user %] -[% END %] - -[%|loc%]Managing bouncing subscribers:[%END%] [% conf.wwsympa_url %]/reviewbouncing/[% list.name %] - -[%# INTERNAL SERVER ERROR : MAIL -%] -[% ELSIF type == 'mail_intern_error' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Listmaster: internal server error [%END%][%END%] - -[%|loc(who)%] User %1 has encountered an internal server error[%END%] -([%action%][% IF msg_id %] - MSG_ID[%|loc%]:[%END%] [%msg_id%][%END%][% IF cmd %] - COMMAND[%|loc%]:[%END%] [%cmd%][%END%][% IF list.name %] - LIST[%|loc%]:[%END%] [%list.name%]@[%conf.host%][%END%])[%|loc%]:[%END%] - -[%IF error%][%error%] -[%END%] - -[%|loc%]See logs for more details.[%END%] - -[% ELSIF type == 'bounce_intern_error' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Listmaster: internal server error [%END%][%END%] - -[%|loc(error)%]The following error occurred while managing bounces: %1[%END%] - -[%|loc%]See logs for more details.[%END%] - -[% ELSIF type == 'automatic_list_creation_failed' -%] -Subject: [% FILTER qencode %][%|loc%]Listmaster: internal server error [%END%][%END%] - -[% IF listname -%] -[%|loc(listname,family,robot,msg_id)%]Failed to process message. Unable to create the dynamic list %1 on family %2@%3. Message <%4> was ignored.[%END%] -[%- ELSE -%] -[%|loc(family,robot,msg_id)%]Failed to process message: family %1@%2 does not exist. Unable to create the dynamic list. Message <%3> was ignored.[%END%] -[%- END -%] - -[%# INTERNAL SERVER ERROR : WEB -%] -[% ELSIF type == 'web_intern_error' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Listmaster: internal server error [%END%][%END%] - -[%|loc(who)%] User %1 has encountered an internal server error[%END%] -([%|loc%]Web interface[%END%] - ACTION[%|loc%]:[%END%] [%action%][% IF list.name %] - LIST[%|loc%]:[%END%] [%list.name%]@[%conf.host%][%END%])[%|loc%]:[%END%] - -[%IF error == 'chdir_error' %][%|loc%]Unable to change directory.[%END%] -[%ELSIF error == 'no_authentication_service_name' %][%|loc%]The authentication server name is not defined.[%END%] -[%ELSIF error == 'auth_conf_no_identified_user' %][%|loc%]auth.conf error: either email_http_header or ldap_host/ldap_get_email_by_uid_filter entries should be defined.[%END%] -[%ELSIF error == 'unknown_authentication_service' %][%|loc(name)%]Unkown authentication service %1.[%END%] -[%ELSIF error == 'add_user_db_failed' %][%|loc(user)%]Add user '%1' in DB failed.[%END%] -[%ELSIF error == 'update_user_db_failed' %][%|loc(user)%]Update user '%1' in DB failed[%END%][% IF old_email %][%|loc(old_email)%] (old email: %1)[%END%][%END%] -[%ELSIF error == 'add_subscriber_db_failed' %][%|loc(sub)%]Add subscriber '%1' in DB failed.[%END%] -[%ELSIF error == 'update_subscriber_db_failed' %][%|loc(sub,old_email)%]Update subscriber '%1' in DB failed[%END%][% IF old_email %][%|loc(old_email)%] (old email: %1)[%END%][%END%] -[%ELSIF error == 'delete_subscriber_db_failed' %][%|loc(sub)%]Delete subscriber '%1' in DB failed.[%END%] -[%ELSIF error == 'delete_email_failed' %][%|loc(old_email)%]Delete user in DB for old email '%1' failed.[%END%] -[%ELSIF error == 'subscriber_not_found' %][%|loc(email,list.name)%]Subscriber '%1' is not found in list %2.[%END%] -[%ELSIF error == 'cannot_read' %][%|loc(filepath)%]Unable to read file: '%1'.[%END%] -[%ELSIF error == 'cannot_write' %][%|loc(filepath)%]Unable to write file: '%1'.[%END%] -[%ELSIF error == 'cannot_open_file' %][%|loc(file)%]Unable to open file '%1'.[%END%] -[%ELSIF error == 'cannot_open_dir' %][%|loc(directory)%]Unable to open directory '%1'.[%END%] -[%ELSIF error == 'cannot_mkdir' %][%|loc(dir)%]Unable to create directory '%1'.[%END%] -[%ELSIF error == 'cannot_open_spool' %][%|loc(spool)%]Unable to open spool '%1'.[%END%] -[%ELSIF error == 'cannot_get_msg' %][%|loc(msg)%]Unable to get message '%1'.[%END%] -[%ELSIF error == 'rename_file' %][%|loc(old,new)%]Unable to rename file '%1' into '%2'.[%END%] -[%ELSIF error == 'rename_dir' %][%|loc(old,new)%]Unable to rename directory '%1' into '%2'.[%END%] -[%ELSIF error == 'erase_file' %][%|loc(file)%]Unable to erase file '%1'.[%END%] -[%ELSIF error == 'cannot_send_distribute' %][%|loc(from,list.name)%]Unable to send command DISTRIBUTE from '%1' to list '%2'.[%END%] -[%ELSIF error == 'no_html_message_available' %][%|loc(dir)%]No HTML version of the message available in '%1'.[%END%] -[%ELSIF error == 'update_config_changes' %][%|loc(list.name)%]Unable to update file config_changes for list '%1'.[%END%] -[%ELSIF error == 'month_not_found' %][%|loc(month,list.name)%]Unable to find month '%1' for list '%2'[%END%][%IF dir%][%|loc(dir)%]: unable to read '%1'.[%END%][%END%] -[%ELSIF error == 'arc_not_found' %][%|loc(arc_file,list.name,path)%]Unable to find archive '%1' for list '%2'[%END%][%IF path%][%|loc(path)%]: unable to read '%1'.[%END%][%END%] -[%ELSIF error == 'inaccessible_archive' %][%|loc(list.name)%]Unable to find archive for list '%1'[%END%][%IF path%][%|loc(path)%]: unable to read '%1'.[%END%][%END%] -[%ELSIF error == 'may_not_send_me'%][%|loc()%]Unable to send archive: no message id found.[%END%] -[%ELSIF error == 'archive_not_found'%][%|loc(msgid)%]No message found in archives matching Message-ID '%1'.[%END%] -[%ELSIF error == 'cannot_save_config'%][%|loc(list.name)%]Cannot save config file for list '%1'.[%END%] -[%ELSIF error == 'failed_to_install_aliases'%][%|loc%]Failed to install aliases.[%END%] -[%ELSIF error == 'failed_to_remove_aliases'%][%|loc%]Failed to remove aliases.[%END%] -[%ELSIF error == 'internal_scenario_error_create_list'%][%|loc%]Internal scenario error for 'create_list'.[%END%] -[%ELSIF error == 'create_list'%][%|loc%]Unable to create list.[%END%] -[%ELSIF error == 'unable_to_load_list_of_topics'%][%|loc%]Unable to load list topics.[%END%] -[%ELSIF error == 'unable_to_load_create_list_templates'%][%|loc%]Unable to load create_list templates.[%END%] -[%ELSIF error == 'unable_get_family'%][%|loc(list.name)%]Unable to get family for list '%1'.[%END%] -[%ELSIF error == 'list_reload'%][%IF new_list.name %][%|loc(new_listname)%]Unable to reload list with new listname '%1'.[%END%][%ELSE%][%|loc%]Unable to reload list[%END%][%END%] -[%ELSIF error == 'sync_include_failed' %][%|loc(list.name)%]Failed to inlude members for list '%1'[%END%] -[%ELSIF error == 'sync_include_admin_failed' %][%|loc(list.name)%]Failed to include list admins for list '%1'[%END%] -[%ELSIF error == 'no_owner_defined' %][%|loc%]No owner is defined for the list '%1'[%END%] -[%ELSIF error == 'exportation_failed' %][%|loc(list.name)%]The exportation to an Ldap directory failed for list '%1'[%END%] -[%ELSIF error == 'unable_to_check_list_smtp' %][%|loc(new_listname)%]Unable to check listname '%1' on SMTP server[%END%] -[%ELSIF error == 'create_shared' %][%|loc(list.name)%]Cannot create shared for list '%1'.[%END%] -[%ELSIF error == 'restore_shared'%][%|loc(list.name)%]Cannot restore shared for list '%1'.[%END%] -[%ELSIF error == 'delete_shared'%][%|loc(list.name)%]Cannot delete shared for list '%1'.[%END%] -[%ELSIF error == 'browse_shared'%][%|loc%]Impossible to browse shared documents for list '%1'.[%END%] -[%ELSIF error == 'cannot_upload'%][%|loc(path)%]Cannot upload file '%1'.[%END%] -[%ELSIF error == 'cannot_unzip' %][%|loc(name)%]Cannot unzip file '%1'.[%END%] -[%ELSIF error == 'error_during_unzip' %][%|loc(name)%]Errors while unzipping file '%1'.[%END%] -[%ELSIF error == 'cannot_send_remind' %][%|loc(from,list.name)%]Unable to send command REMIND from '%1' to list '%2'.[%END%] -[%ELSIF error == 'cannot_send_mail' %][%|loc(from,list.name)%]Unable to send mail from '%1' to list '%2'.[%END%] -[%ELSIF error == 'auth_msg_failed' %][%|loc(key,list.name)%]Unable to access the message authenticated with key '%1' for list '%2'.[%END%] -[%ELSIF error == 'del_sub_request' %][%|loc(sub)%]Unable to delete subscription request for user '%1'.[%END%] -[%ELSIF error == 'add_file_zip' %][%|loc(file)%]Unable to add file '%1' to archives.[%END%] -[%ELSIF error == 'write_file_zip' %][%|loc(zipfile)%]Unable to write file zip '%1'.[%END%] -[%ELSIF error == 'err_404' %][%|loc(zipfile)%]File not found.[%END%] -[%ELSIF error == 'new_document_failed' %][%|loc(path,list.name)%]Unable to create a SharedDocument with path '%1' for list '%2'.[%END%] -[%ELSIF error == 'cookie_error' %][%|loc%]Parameter cookie undefined, authentication failure.[%END%] -[%ELSIF error == 'cookie_error_env' %][%|loc(env)%]Cookie error: '%1' undefined, authentication failure.[%END%] -[%ELSIF error == 'unable_to_rename_list' %][%|loc(list.name,new_listname)%]Unable to rename list '%1' to '%2'.[%END%] -[%ELSIF error%][%error%] -[%END%] -[%|loc%]See logs for more details.[%END%] - -[%# SYSTEM ERROR : WEB -%] -[% ELSIF type == 'web_system_error' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Listmaster: system error [%END%][%END%] - -[%|loc(who)%] User %1 has encountered a system error[%END%] -([%|loc%]Web interface[%END%] - ACTION[%|loc%]:[%END%] [%action%][% IF list.name %] - LIST[%|loc%]:[%END%] [%list.name%]@[%conf.host%][%END%])[%|loc%]:[%END%] - -[%IF error == 'a' %] -[%ELSIF error%][% error %] -[%END%] -[%|loc%]See logs for more details.[%END%] - -[%# OTHER -%] -[% ELSE -%] -Subject: [% FILTER qencode %]Listmaster / [% type %][%END%] - -[% param0 %] -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/listowner_notification.tt2 b/sympa-6.1.20-src/mail_tt2/listowner_notification.tt2 deleted file mode 100644 index 663f5d0cb026c06be59690631757335493bb8977..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/listowner_notification.tt2 +++ /dev/null @@ -1,152 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -[% IF type == 'arc_quota_exceeded' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List %1 archive quota exceeded[%END%][%END%] - -[%|loc(list.name,list.host,size,conf.host,conf.listmaster_email)%]%1 archive quota exceeded. -Total size used for %1@%2 archive is %3 Bytes. Messages -are no longer being web-archived. Please contact %5@%4. [%END%] - -[% ELSIF type == 'arc_quota_95' -%] -Subject: [% FILTER qencode %][%|loc(list.name,rate)%]List "%1" warning: archive %2% full[%END%][%END%] - -[%|loc(rate2,list.name,list.host,rate)%]%2@%3 archives use %4% of allowed disk quota.[%END%] -[%|loc(list.name,size)%]Total size used for %1@%2 Bytes.[%END%] - -[%|loc(conf.host,conf.listmaster_email)%]Messages are still archived but you should contact %2@%1[%END%]. - -[% ELSIF type == 'closed_during_instantiation_family' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List %1 is closed[%END%][%END%] - -[%|loc(list.name,list.host,param0)%]%1@%2 is no longer an instance of family %3. -This list has been closed.[%END%] - -[% ELSIF type == 'warn-signoff' -%] -Subject: [% FILTER qencode %][%|loc(type,list.name,who,gecos)%]FYI: %1 List "%2" from %3 %4[%END%][%END%] - -[%|loc(who,gecos,list.name)%]WARNING: %1 %2 failed to unsubscribe from %3 because his address was not found in the list. -You may help this person looking for similar email in subscriber list using the following link :[%END%] - -[% conf.wwsympa_url %]/ticket/[% one_time_ticket %] - -[% ELSIF type == 'erase_customizing' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List "%1" customizations have been removed[%END%][%END%] - -[%|loc(list.name,list.host,param0,param1,param2)%]List %1@%2 has been reinstantiated (family %3). -Some of the customizations have been removed because they no longer respect the family rules: - - Parameters: %4 - -[%END%] - -[% ELSIF type == 'automatic_bounce_management' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List %1 automatic bounce management[%END%][%END%] - - [% IF action == 'notify_bouncers' -%] -[%|loc(total,list.name)%]Because we received many non-delivery reports, the %1 subscribers listed below have been -notified that they might be removed from list %2:[%END%] - [% ELSIF action == 'remove_bouncers' -%] -[%|loc(total,list.name)%]Because we received many non-delivery reports, the %1 subscribers listed below have been -removed from list %2:[%END%] - [% ELSIF action == 'none' -%] -[%|loc(total,list.name)%]Because we received many non-delivery reports, the %1 subscribers listed below have been -selected by Sympa as severe bouncing addresses:[%END%] - [%END%] - -[% FOREACH user = user_list -%] -[% user %] -[%END%] - -[%|loc%]Managing bouncing subscribers:[%END%] [% conf.wwsympa_url %]/reviewbouncing/[% list.name %] - -[% ELSIF type == 'subrequest' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Subscription request to list %1[%END%][%END%] - -[%|loc(list.name)-%]Dear owner of list %1, - -A user asked to be added as a subscriber to your list. In order to list and manage -pending subscription requests you should click on the following link:[%END%] - -[% conf.wwsympa_url %]/ticket/[% one_time_ticket %] - -[%|loc(replyto)%]If prefered, you can accept this subscription request sending an email to %1 with the following subject:[%END%] -AUTH [%keyauth%] ADD [%list.name%] [%who%] [%gecos%] - - -[%|loc%]That can be done using this mailto link:[%END%][% FILTER escape_url %]mailto:[%replyto%]?subject=auth [%keyauth%] ADD [%list.name%] [%escaped_who%] [%escaped_gecos%][% END %] - -[% IF custom_attribute %] -[%|loc%]The user has provided the following informations:[%END%] -[% FOREACH attribute = custom_attribute %] -[% attribute.key %][%|loc%]:[%END%] [% attribute.value.value -%] -[%END-%] -[% END %] - -[% ELSIF type == 'sigrequest' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]UNsubscription request from list %1[%END%][%END%] - -[%|loc(list.name)-%]Dear owner of list %1, - -A user asked to be deleted from your list. If this is OK -with you, you should click on the following link:[% END %] - -[% FILTER escape_url %]mailto:[%sympa%]?subject=auth [%keyauth%] DEL [%list.name%] [%escaped_who%][% END %] - -[%|loc(sympa)-%] -or send an email to %1 with the following subject: -[%END%] -AUTH [%keyauth%] DEL [%list.name%] [%who%] - - -[% ELSIF type == 'bounce_rate' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]WARNING: bounce rate too high in list %1[%END%][%END%] - -[%|loc(list.name,rate)%]Bounce rate in list %1 is %2. - -You should delete bouncing subscribers: -[%END%] -[% conf.wwsympa_url %]/reviewbouncing/[% list.name %] - - -[% ELSIF type == 'notice' -%] -Subject: [% FILTER qencode %][%|loc(command,list.name,who,gecos)%]FYI: %1 list %2 from %3 %4[%END%][%END%] - -[%|loc(command,list.name,who,gecos)%]FYI command %1 list %2 from %3 %4[%END%][% IF by -%][%|loc(by)%] validated by %1 [%END%] -[%|loc%]No action is needed on your side.[%END%] -[%END%] - -[% ELSIF type == 'automatic_del' -%] -Subject: [% FILTER qencode %][%|loc(who)%]FYI: automatic removal of user %1[%END%][%END%] - -[%|loc(who,list.name)%]User "%1" has been automatically removed from list %2. [%END%] -[% IF reason == 'arf' -%] - The user complain to abuse service about a message from the list using email feedback reports format. -[% ELSIF reason == 'welcome' -%] - The welcome message (or a subscription remind) sent to the user has triggered a non-delivery report. The user email address might be incorrect. -[%END%] -(no action needed) - - -[% ELSIF type == 'automatic_del' -%] -Subject: [% FILTER qencode %][%|loc(who)%]FYI: automatic removal of user %1[%END%][%END%] - -[%|loc(who,list.name)%]User "%1" has been automatically removed from list %2. [%END%] -[% IF reason == 'arf' -%] - The user complain to abuse service about a message from the list using email feedback reports format. -[% ELSIF reason == 'welcome' -%] - The welcome message (or a subscription remind) sent to the user has triggered a non-delivery report. The user email address might be incorrect. -[%END%] -(no action needed) - -[% ELSIF type == 'failed_to_change_included_member' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]List %1: Failed to change member email address[%END%][%END%] - -[%|loc(current_email,new_email,datasource)%]User %1 could not change his member email address (new email address is %2) because he is included via a the following data sources: %3. - -If you are able to do so, you should probably update these data sources with this person's new email address.[%END%] - -[% ELSE -%] -Subject: [% FILTER qencode %][%|loc(list.name,type)%]List %1 / %2[%END%][%END%] - -[% param0 %] -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/lists.tt2 b/sympa-6.1.20-src/mail_tt2/lists.tt2 deleted file mode 100644 index 3830d07fedcc9513aa709cbbd7ce0f0c02b57f8e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/lists.tt2 +++ /dev/null @@ -1,12 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc%]Public lists[%END%][%END%] - -[%|loc(conf.email,conf.host)%]Here is the list of lists from %1@%2[%END%] - -[% FOREACH l = lists -%] -[% l.key %]@[% l.value.host %][%|loc%]:[%END%] [% l.value.subject %] - -[% END %] - --_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ -mailto:listmaster@[% conf.host %] diff --git a/sympa-6.1.20-src/mail_tt2/message_report.tt2 b/sympa-6.1.20-src/mail_tt2/message_report.tt2 deleted file mode 100644 index b8834cf3ca5c0981106967228ca579f83c7c2046..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/message_report.tt2 +++ /dev/null @@ -1,137 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -[% IF type == 'intern_error' -%] -Subject: [% FILTER qencode %][%|loc%]Message distribution: Internal server error[%END%][%END%] -Content-Type: multipart/mixed; boundary="[% boundary %]" -Content-Transfer-Encoding: 8bit - ---[% boundary %] -Content-Disposition: inline - -[% IF entry == 'forward' %] -[%|loc(list.name,function)%]Impossible to forward your message to '%1-%2' because of an internal server error.[%END%] -[% ELSE %] -[%|loc(list.name)%]Impossible to distribute your message for list '%1' because of an internal server error.[%END%] -[% END %] -[%|loc(list.name,list.host)%]For further information, please contact %1-request@%2[%END%] - -[%################ %] -[%#### USER ERROR %] -[%################ %] -[% ELSIF type == 'user_error' -%] -Subject: [% FILTER qencode %][%|loc%]Message distribution: User error[%END%][%END%] -Content-Type: multipart/mixed; boundary="[% boundary %]" -Content-Transfer-Encoding: 8bit - ---[% boundary %] -Content-Disposition: inline - -[% IF list.name -%] -[%|loc(list.name)%]Impossible to distribute your message for list '%1' for the following reason:[%END%] -[% ELSE -%] -[%|loc%]Impossible to distribute your message for the following reason:[%END%] -[% END -%] - -[% IF entry == 'routing_error' -%] -[%|loc(list.name,conf.sympa,list.host)%]The following message was sent to list '%1' and it seems to contain -one or more commands like subscribe, unsubscribe, help, index, get, ... - -If your message contained a command, please notice that -commands should never ever be sent to lists. Commands must be sent -to %2 exclusively. - -If your message was really meant to be sent to the list, it was -interpreted by the software as a command. Please contact the list owner: -%1-request@%3 so that he can take care of your message. - -Thank you for your attention. -[%END%] -[% ELSIF entry == 'message_too_large' -%] - -[%|loc(msg_size,max_size)%]Your message could not be sent because its size (%1 kB) was over the maximum size (%2 kB) allowed on this list. - -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 entry == 'list_unknown' -%] - -[%|loc(listname)%]List '%1' does not exist.[%END%] -[% ELSIF entry == 'dyn_cant_create' -%] - -[%|loc(listname)%]The %1 list could not be created.[%END%] -[% ELSIF entry == 'unfound_message' -%] - -[%|loc(list.name,key)%]Unable to access the message on list %1 with key %2. -Warning: this message may already have been sent by one of the list's editor.[%END%] -[% ELSIF entry == 'unfound_file_message' -%] - -[%|loc(key)%]Unable to access the message authenticated with key %1. The message may already been confirmed.[%END%] -[% ELSIF entry == 'wrong_format_message' -%] - -[%|loc(key)%]Unable to access the message authenticated with key %1 because of a wrong format. The message may already been confirmed.[%END%] -[% END -%] -[% IF list.name %] -[%|loc(list.name,list.host)%]For further information, please contact %1-request@%2[%END%] -[% ELSE %] -[%|loc(conf.host)%]For further information, please contact listmaster@%1[%END%] -[% END %] -[%##################### %] -[%# AUTHORIZATION ERROR %] -[%##################### %] -[% ELSIF type == 'authorization_reject' -%] -Subject: [% FILTER qencode %][%|loc%]Message distribution: Authorization denied[%END%][%END%] -Content-Type: multipart/mixed; boundary="[% boundary %]" -Content-Transfer-Encoding: 8bit - ---[% boundary %] -Content-Disposition: inline - -[%|loc(list.name)%]Your message for list '%1' (attached below) was rejected. -You are not allowed to send this message for the following reason:[%END%] - -[% SET reason = entry -%] [% PROCESS authorization_reject.tt2 %] -[%|loc(list.name,list.host)%]For further information, please contact %1-request@%2[%END%] -[%##################### %] -[%###### SUCCESS NOTICE %] -[%##################### %] -[% ELSIF type == 'success' -%] -Subject: [% FILTER qencode %][%|loc%]Message distribution[%END%][%END%] - -[% IF entry == 'moderating_message' -%] - -[%|loc(list.name)%]Your message for list %1 has been forwarded to editor(s)[%END%] - -[% ELSIF entry == 'message_distributed' -%] - -[%|loc(key,list.name)%]Message %1 for list '%2' has been distributed.[%END%] - -[% ELSIF entry == 'message_in_distribution_spool' -%] - -[%|loc(key,list.name)%]Message %1 for list '%2' has been validated; it will be distributed soon.[%END%] - -[% ELSIF entry == 'message_rejected' -%] - -[%|loc(key,list.name)%]Message %1 for list '%2' has been rejected.[%END%] - -[% ELSIF entry == 'message_confirmed' -%] - -[%|loc(key,list.name)%]Your message for list '%2' with the %1 ID has been confirmed and distributed.[%END%] - -[% ELSIF entry == 'message_confirmed_and_in_distribution_spool' -%] - -[%|loc(key,list.name)%]Your message for list '%2' with the %1 ID has been confirmed; it will be distributed soon.[%END%] - -[% END -%] -[% END %] -[%##################### %] -[%# Inserted MESSAGE %] -[%##################### %] -[%- IF msg -%] ---[% boundary %] -Content-Type: message/rfc822 -Content-Transfer-Encoding: 8bit -Content-Disposition: inline -X-Sympa-Attach: yes - -[% msg %] - ---[% boundary %]-- -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/moderate.tt2 b/sympa-6.1.20-src/mail_tt2/moderate.tt2 deleted file mode 100644 index 665ef961cb4ffd824cd706511d0cc5940114f978..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/moderate.tt2 +++ /dev/null @@ -1,53 +0,0 @@ -From: [% fromlist %] -To: [% list.name %]-editor@[% list.host %] -[% IF request_topic -%]Subject: [% FILTER qencode %][%|loc(list.name,msg_from)%]Article to be tagged for list %1 from %2[%END%][%END%] -[% ELSE -%]Subject: [% FILTER qencode %][%|loc(list.name,msg_from)%]Message for list %1 from %2 to be approved[%END%][%END%] -[% END -%] -Reply-To: [% conf.email %]@[% conf.host %] -[% IF spam_status != 'spam' -%] -Content-Type: multipart/mixed; boundary="[% boundary %]" - ---[% boundary %] -Content-Disposition: inline -[% END -%] - -[%|loc(list.name,msg_from)%]One new message from list %1 from %2 arrived. [%END%] -[%- IF spam_status == 'spam' -%][%|loc%]This message has been tagged as spam[%END%][% END %] - -[%|loc(mod_spool_size)%]They are %1 messages awaiting moderation.[%END%] -[%|loc%]To browse the awaiting messages, you should click on the following link:[%END%] <[% conf.wwsympa_url %]/ticket/[% one_time_ticket %]> - -[% IF method == 'md5' -%] -[% IF request_topic -%][%|loc(list.name)%]To tag the message in list %1 for the appropriate topic, please use the following link:[%END%] - -[% conf.wwsympa_url %]/viewmod/[% list.name %]/[% modkey %] -[%- ELSE -%] -[%- IF spam_status == 'spam' -%] -[%|loc%]Because the new message is suspected to be a spam it is not attached to this one. You must use -the web interface to reject or validate it.[%END%] -[%- ELSE -%] -[%|loc(list.name)%]To distribute the attached message in list %1:[%END%] -<[% FILTER escape_url %]mailto:[%conf.sympa%]?subject=DISTRIBUTE [%list.name%] [%modkey%][% END %]> -[%|loc(conf.email,conf.host)%]Or send a message to %1@%2 with the following subject:[%END%] -DISTRIBUTE [% list.name %] [% modkey %] - -[%|loc%]To reject it (it will be removed):[%END%] -<[% FILTER escape_url %]mailto:[%conf.sympa%]?subject=REJECT [%list.name%] [%modkey%][% END %]> -[%|loc(conf.email,conf.host)%]Or send a message to %1@%2 with the following subject:[%END%] -REJECT [% list.name %] [% modkey %] - -[%|loc(conf.wwsympa_url)%]The messages moderating documentation:[%END%] <[% conf.wwsympa_url %]/help/admin#moderate> - ---[% boundary %] -Content-Type: message/rfc822 -Content-Transfer-Encoding: 8bit -Content-Disposition: inline -X-Sympa-Attach: yes - -[% INSERT $msg_path IF msg_path %] - ---[% boundary %]-- -[%- END -%] -[% END %] -[% END %] - diff --git a/sympa-6.1.20-src/mail_tt2/modindex.tt2 b/sympa-6.1.20-src/mail_tt2/modindex.tt2 deleted file mode 100644 index c801fd291ee48e76ded9277363e748b21ab9beb9..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/modindex.tt2 +++ /dev/null @@ -1,33 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Moderation spool for list %1[%END%][%END%] -Content-Type: multipart/mixed; boundary="[% boundary1 %]" - ---[% boundary1 %] -Content-Disposition: inline - -[%|loc(total,list.name,list.host)%]There are %1 messages to be moderated for list %2@%3[%END%] - -[%|loc%]The messages moderating documentation:[%END%] <[% conf.wwsympa_url %]/help/admin#moderate> - -[% IF spool %] ---[% boundary1 %] -Content-Type: multipart/digest; boundary="[% boundary2 %]" -Content-Transfer-Encoding: 8bit -MIME-Version: 1.0 - -This is a multi-part message in MIME format... - -[% FOREACH msg = spool %] ---[% boundary2 %] -Content-Type: message/rfc822 -Content-Transfer-Encoding: 8bit -Content-Disposition: inline -X-Sympa-Attach: yes - -[% msg %] - -[% END %] ---[% boundary2 %]-- - ---[% boundary1 %]-- -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/reject.tt2 b/sympa-6.1.20-src/mail_tt2/reject.tt2 deleted file mode 100644 index 3a1944b3a19e26863203e17c87bfb686a901cfca..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/reject.tt2 +++ /dev/null @@ -1,11 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc%]Your message has been rejected.[%END%][%END%] - -[%|loc(list.name,list.host,rejected_by)%]Your message for list %1@%2 -has been rejected by the moderator (%3).[%END%] - -[%|loc(subject)%](Subject of your mail: %1)[%END%] - - -[%|loc(list.name)%]Check %1 list usage:[%END%] -[% conf.wwsympa_url %]/info/[% list.name %] diff --git a/sympa-6.1.20-src/mail_tt2/removed.tt2 b/sympa-6.1.20-src/mail_tt2/removed.tt2 deleted file mode 100644 index d1361adb6377250746d1b9a1dde6a5b65c642d64..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/removed.tt2 +++ /dev/null @@ -1,9 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Removed from %1[%END%][%END%] - -[%|loc(user.email,list.name,list.host)%]Your address (%1) has been removed from list -%2@%3, probably because we received -non-delivery reports for your address.[%END%] - -[%|loc%]You can subscribe again:[%END%] -[% FILTER escape_url %]mailto:[%conf.email%]@[%conf.host%]?subject=sub [%list.name%][% END %] diff --git a/sympa-6.1.20-src/mail_tt2/request_auth.tt2 b/sympa-6.1.20-src/mail_tt2/request_auth.tt2 deleted file mode 100644 index 9ba6d6512f95800ccf28e96760ed039187dcfab6..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/request_auth.tt2 +++ /dev/null @@ -1,37 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -Subject: [% FILTER qencode %][%command%][%END%] - -[% IF list_context -%] - [% IF type == 'signoff' -%] -[%|loc(list.name)-%]You asked for your e-mail address to be removed from list '%1'.[%- END -%] - - [%- ELSIF type == 'subscribe' -%] -[%|loc(list.name)-%]You asked for your e-mail address to be added to list '%1'.[%- END -%] - - [%- ELSIF type == 'add' -%] -[%|loc(list.name)-%]You requested a user subscription in list %1.[%- END -%] - - [%- ELSIF type == 'del' -%] -[%|loc(list.name)-%]You requested a user removal from list %1.[%- END -%] - - [%- ELSIF type == 'remind' -%] -[%|loc(list.name)-%]You requested a subscription reminder to be sent to each subscriber of list %1[%- END -%] - [%- END -%] - -[%- ELSE -%] - [% IF type == 'remind' -%] -[%|loc-%]You requested a subscription reminder to be sent to each subscriber of list '*'[%- END -%] - [%- END -%] -[%- END -%] - -[%|loc(conf.sympa,command)-%]If you want this action to be taken, please - -- reply to this mail -OR -- send a message to %1 with subject - %2 -OR -- hit the following mailto[% END %] [% FILTER escape_url %]mailto:[%conf.sympa%]?subject=[%command_escaped%][% END %] - -[%|loc-%]If you do not want this action to be taken, you can safely ignore this message.[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/send_auth.tt2 b/sympa-6.1.20-src/mail_tt2/send_auth.tt2 deleted file mode 100644 index 7d4bbbfce12d88080771a6c650011b403e3f010e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/send_auth.tt2 +++ /dev/null @@ -1,31 +0,0 @@ -From: [% conf.sympa %] -Reply-to: [% conf.sympa %] -[% IF request_topic -%]Subject: [% FILTER qencode %][%|loc(list.name)%]Tag your message for list %1[%END%][%END%] -[% ELSE -%]Subject: [% FILTER qencode %]Confirm [% authkey %][%END%] -[% END -%] -Content-Type: multipart/mixed; boundary="[% boundary %]" - ---[% boundary %] -Content-Disposition: inline - -[% IF request_topic -%][%|loc(list.name,conf.wwsympa_url,authkey)%]List %1 allows you to tag your messages, using a set of defined topics. To tag the attached message go to the following page:[%END%] - -[%conf.wwsympa_url%]/request_topic/[%list.name%]/[%authkey%] -[%- ELSE -%][%|loc(list.name)%]To distribute the attached message in list %1, follow the link below:[%END%] - -[% FILTER escape_url %]mailto:[%conf.sympa%]?subject=CONFIRM [%authkey%][% END %] - -[%|loc(conf.sympa)%]Or send a message to %1 with the following subject: -[% END %] -CONFIRM [% authkey %] -[%- END -%] - ---[% boundary %] -Content-Type: message/rfc822 -Content-Transfer-Encoding: 8bit -Content-Disposition: inline -X-Sympa-Attach: yes - -[% INSERT $file IF file %] - ---[% boundary %]-- diff --git a/sympa-6.1.20-src/mail_tt2/sendpasswd.tt2 b/sympa-6.1.20-src/mail_tt2/sendpasswd.tt2 deleted file mode 100644 index 35af680e11a71e8527ad3969336060f06ded0834..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/sendpasswd.tt2 +++ /dev/null @@ -1,30 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% newuser.email %] -[% IF action == 'subrequest' -%] -Subject: [% FILTER qencode %][%|loc(conf.title,list)%]%1 / subscribing to %2[%END%][%END%] -[% ELSIF action == 'sigrequest' -%] -Subject: [% FILTER qencode %][%|loc(conf.title,list)%]%1 / unsubscribing from %2[%END%][%END%] -[% ELSE -%] -Subject: [% FILTER qencode %][%|loc(conf.title)%]%1 / your environment[%END%][%END%] -[% END -%] - -[% IF action == 'subrequest' -%] - -[%|loc(list,conf.host,request_from_host)%]Someone, probably you, requested to subscribe to list %1@%2. (This request came from host %3).[%END%] -[%|loc%]You may ignore this subscription request or click on the following link in order to confirm it [%END%]: [% base_url %][% path_cgi %]/ticket/[% one_time_ticket %] - -[% ELSIF action == 'sigrequest' -%] -[%|loc(list)%]You asked to be unsubscribed from %1 mailing list.[%END%] - -[%|loc%]To unsubscribe from the list, you need to provide the following password[%END%] - - [%|loc(newuser.password)%]password: %1[%END%] - -[% ELSE -%] - -[%|loc(conf.host,request_from_host)%]Someone, probably you, requested to allocate or renew your password for your list server account %1. (This request came from host %2).[%END%] -[%|loc%]You may ignore this request or click on the following link in order to choose your password. [%END%]: [% base_url %][% path_cgi %]/ticket/[% one_time_ticket %] - -[%END%] - -[%|loc(base_url,path_cgi)%]Help on Sympa: %1%2[%END%]/help diff --git a/sympa-6.1.20-src/mail_tt2/sendssopasswd.tt2 b/sympa-6.1.20-src/mail_tt2/sendssopasswd.tt2 deleted file mode 100644 index de3210c814a7564dab7c5655e20dcf01150269d7..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/sendssopasswd.tt2 +++ /dev/null @@ -1,13 +0,0 @@ -From: [% conf.sympa %] -To: [% newuser.email %] -Subject: [% FILTER qencode %][%|loc(conf.title)%]%1 / your environment[%END%][%END%] - -[%|loc%]To complete your account setup actions you need to confirm that you have -supplied a working email address. Please follow the link below to complete your account configuration.[%END%] - - [% base_url %][% path_cgi %]/sso_login/[% server.key %]/confirmemail/[% init_email %]/[% one_time_ticket %] - - -[% conf.title %]: [% base_url %][% path_cgi %] - -[%|loc(base_url,path_cgi)%]Help on Sympa: %1%2[%END%]/help diff --git a/sympa-6.1.20-src/mail_tt2/stats_report.tt2 b/sympa-6.1.20-src/mail_tt2/stats_report.tt2 deleted file mode 100644 index d57ed2aec865d8a886f663036aa64646f7009e93..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/stats_report.tt2 +++ /dev/null @@ -1,10 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]STATS %1[%END%][%END%] - -[%|loc(list.name)%]Information regarding list %1[%END%] : - - [%|loc(stats.msg_rcv)%]Number of received messages : %1[%END%] - [%|loc(stats.msg_sent)%]Number of forwarded messages: %1[%END%] - - [%|loc(stats.byte_rcv)%]Received mega-bytes : %1[%END%] - [%|loc(stats.byte_sent)%]Forwarded mega-bytes : %1[%END%] diff --git a/sympa-6.1.20-src/mail_tt2/summary.tt2 b/sympa-6.1.20-src/mail_tt2/summary.tt2 deleted file mode 100644 index ca822b6395170b427d9a179630060b171deb7b1d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/summary.tt2 +++ /dev/null @@ -1,12 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Summary of list %1[%END%][%END%] - -[% table_of_content %][%|loc%]:[%END%] - -[% FOREACH m = msg_list -%] -[%|wrap(0,4)%][% m.id %]. [% m.subject %] [% m.from %][%END#wrap%] -[% IF conf.wwsympa_url %] - [% conf.wwsympa_url %]/arcsearch_id/[% list.name %]/[% m.month %]/[% m.message_id %] -[% END %] -[% END %] - diff --git a/sympa-6.1.20-src/mail_tt2/urlized_part.tt2 b/sympa-6.1.20-src/mail_tt2/urlized_part.tt2 deleted file mode 100644 index 70f5a65fa159e3dadd603d407998b52924804d9c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/urlized_part.tt2 +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: text/plain; charset=[% charset %]; format=flowed -Content-Disposition: inline - -[%|loc(file_name)%]The %1 file that was initially attached to this message has been stored on the mailing lists server:[%END%] -[% file_url %] diff --git a/sympa-6.1.20-src/mail_tt2/user_notification.tt2 b/sympa-6.1.20-src/mail_tt2/user_notification.tt2 deleted file mode 100644 index b60931ba58445d7b23bbd79081e9e9770d20a624..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/user_notification.tt2 +++ /dev/null @@ -1,73 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -To: [% to %] -[% IF type == 'auto_notify_bouncers' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Your bouncing address in list %1[%END%][%END%] - -[%|loc(list.name,to,subscriber.first_bounce)%]Messages from list %1 that were sent to your address %2 -have generated non-delivery reports since %3. -If this problem persists, you will be automatically unsubscribed from the list.[%END%] - -[%|loc%]You can contact list owner:[%END%] [% list.name %]-request@[% conf.host %] - - -[% ELSIF type == 'deleted_msg_topics' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Topics udpating in list %1[%END%][%END%] - -[%|loc(list.name)%]Some of the topics you are subscribed to in the list '%1' have been deleted. -Deleted topic(s) is(are):[%END%] -[% FOREACH t = del_topics -%] - [% t %] -[% END -%] - -[%|loc(url)%]To update your topics subscription, go to the following page: -%1[% END %] - - -[% ELSIF type == 'added_as_listadmin' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Management of list %1[%END%][%END%] - -[% IF admin_type == 'owner' %] -[%|loc(delegator,list.name,list.host)%]You have been delegated the responsability of list owner by %1 for list %2@%3.[%END%] -[% ELSE %] -[%|loc(delegator,list.name,list.host)%]You have been delegated the responsability of list moderator by %1 for list %2@%3.[%END%] -[% END %] - -[%|loc%]The list homepage:[%END%] [% conf.wwsympa_url %]/info/[% list.name %] -[%|loc%]Owner and moderator guide:[%END%] [% conf.wwsympa_url %]/help/admin - - -[% ELSIF type == 'ticket_to_send' -%] -Subject: [% FILTER qencode %][%|loc%]Changing your subscriber email address[%END%][%END%] - -[%|loc%]You have requested to change your subscriber email address. To confirm your new email address with the SYMPA server, please click the link below:[%END%] - [% conf.wwsympa_url %]/ticket/[% one_time_ticket %] - - -[% ELSIF type == 'ticket_to_signoff' -%] -Subject: [% FILTER qencode %][%|loc(list.name)%]Unsubscribing from list %1[%END%][%END%] -[% IF context == 'auto_signoff'%] -[%|loc(list.name,ip)%]Somebody (probably you) requested to unsubscribe you from list %1. -This query was issued from the IP number '%2'. -To confirm and get removed from the list, please click the link below: [%END%] -[% ELSE %] -[%|loc(list.name)%]You have requested to be removed from list %1. To confirm and get removed from the list, please click the link below: [%END%] -[% END %] - [% conf.wwsympa_url %]/ticket/[% one_time_ticket %] - -[% ELSIF type == 'ticket_to_family_signoff' -%] -Subject: [% FILTER qencode %][%|loc(family)%]Unsubscribing from family %1[%END%][%END%] -[% IF context == 'family_signoff'%] -[%|loc(family,ip)%]Somebody (probably you) requested to unsubscribe you from family %1. -This query was issued from the IP number '%2'. -To confirm and get 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 get removed from all the lists of this family, please click the link below: [%END%] -[% END %] - [% conf.wwsympa_url %]/ticket/[% one_time_ticket %] - - -[% ELSE -%] -Subject: [% FILTER qencode %][%list.name%] / [%type%][%END%] - -[% param0 %] -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/welcome.tt2 b/sympa-6.1.20-src/mail_tt2/welcome.tt2 deleted file mode 100644 index e95f9f30a4a717a7fb0da8b3ca08c525e100a05b..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/welcome.tt2 +++ /dev/null @@ -1,14 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name)%]Welcome to list %1[%END%][%END%] - -[%|loc(list.name,list.host)%]Welcome to list %1@%2[%END%] -[%|loc(user.email)%]Your subscription email is %1[%END%] - -[% TRY %] -[% INSERT "info" %] -[% CATCH %] -[% END %] - -[%|loc%]The list homepage:[%END%] [% conf.wwsympa_url %]/info/[% list.name %] -[%|loc%]General informations about mailing lists:[%END%] [% conf.wwsympa_url %]/help/introduction - diff --git a/sympa-6.1.20-src/mail_tt2/which.tt2 b/sympa-6.1.20-src/mail_tt2/which.tt2 deleted file mode 100644 index 92866105d12e52cc2704acc4ce14a1b1ee081a54..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/which.tt2 +++ /dev/null @@ -1,22 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc%]Result of your command[%END%][%END%] - -[%|loc%]Here are the lists you are currently subscribed to:[%END%] - -[% FOREACH l = lists -%] -[% l %] -[% END %] - -[% IF is_owner %][%|loc%]Lists you are owner of:[%END%] - -[% FOREACH l = owner_lists -%] -[% l %] -[% END %] -[% END -%] - -[% IF is_editor %][%|loc%]Lists you are editor of:[%END%] - -[% FOREACH l = editor_lists -%] -[% l %] -[% END %] -[% END %] diff --git a/sympa-6.1.20-src/mail_tt2/x509-user-cert-missing.tt2 b/sympa-6.1.20-src/mail_tt2/x509-user-cert-missing.tt2 deleted file mode 100644 index 8ad3ceb94a121b8678482a58f19c16d362554d70..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/x509-user-cert-missing.tt2 +++ /dev/null @@ -1,13 +0,0 @@ -From: [% fromlist %] -Subject: [% FILTER qencode %][%|loc(list.name,list.host)%]encrypted message for list %1@%2[%END%][%END%] - -[%|loc(mail.sender,mail.subject)%]An encrypted message from %1 has been distributed to -Subject: %2[%END%] - -[%|loc(user.email)%]It was not possible to send you the message because the mailing list manager -was unable to access your personal certificate (email %1).[%END%] -[%|loc(conf.email,conf.host)%]Please, in order to receive future encrypted messages send a signed message -to %1@%2 .[%END%] - -[%|loc%]Information about this list:[%END%] -[% conf.wwsympa_url %]/info/[% list.name %] diff --git a/sympa-6.1.20-src/mail_tt2/your_infected_msg.tt2 b/sympa-6.1.20-src/mail_tt2/your_infected_msg.tt2 deleted file mode 100644 index eac4789597b017dcfa6192a2c3331dac64b4d65b..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/mail_tt2/your_infected_msg.tt2 +++ /dev/null @@ -1,14 +0,0 @@ -From: SYMPA <[% conf.email %]@[% conf.host %]> -Subject: [% FILTER qencode %][%|loc%]A virus in your email[%END%][%END%] - - [%|loc%]***** V I R U S A L E R T *****[%END%] - -[%|loc(virus_name,recipient,from)%]Our viruschecker found a virus named %1 -in a message addressed to %2 and that seems -to be yours (From: %3).[%END%] - -[%|loc%]We stopped delivery of this email.[%END%] - -[%|loc%]It may be useful to check your system for viruses. - -Note, however, that many viruses fake sender's e-mail address, so it is possible that the virus didn't come from your computer. In that case, please disregard this message.[%END%] diff --git a/sympa-6.1.20-src/src/etc/mhonarc-ressources.tt2 b/sympa-6.1.20-src/src/etc/mhonarc-ressources.tt2 deleted file mode 100644 index 4fc8e2534040a2ee3da65731ed1513e635b42c7f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/mhonarc-ressources.tt2 +++ /dev/null @@ -1,720 +0,0 @@ -<!-- ============================================================== --> -<!-- Variable definitions --> -<!-- ============================================================== --> - -<!-- -User defined variables are defined by the DEFINEVAR element. The first -line is the name of the variable and subsequent lines to the close tag -are the value of the variable. - -User defined variables are extremely useful when the same layout -information occurs in multiple places. It also help centralize -information that maybe likely to change. User defined variables can -reference other variables. ---> - -<DefineVar> -CALENDAR -<div id="ArcCalendar"> - ($tag$% FOREACH year = calendar %$tag$) - <div> - <ul class="calendar"> - <li class="calendarYear">($tag$% year.key %$tag$)</li> - ($tag$% FOREACH month = ['01' '02' '03' '04' '05' '06' '07' '08' '09' '10' '11' '12'] %$tag$) - ($tag$% IF year.value.item(month) %$tag$) - ($tag$% IF year.key == '$yyyy$' && month == '$mois$'%$tag$) <li class="calendarLinksCurrentPage"><a href="($tag$% path_cgi %$tag$)/arc/($tag$% list %$tag$)/($tag$% year.key %$tag$)-($tag$% month %$tag$)/" title="($tag$%|loc(year.value.item(month))%$tag$)%1 message(s)($tag$%END%$tag$)">($tag$% month %$tag$)</a></li> - ($tag$% ELSE %$tag$)<li class="calendarLinks"><a href="($tag$% path_cgi %$tag$)/arc/($tag$% list %$tag$)/($tag$% year.key %$tag$)-($tag$% month %$tag$)/" title="($tag$%|loc(year.value.item(month))%$tag$)%1 message(s)($tag$%END%$tag$)">($tag$% month %$tag$)</a></li> - ($tag$% END %$tag$) - ($tag$% ELSE %$tag$)<li class="calendarLinksInactive">($tag$% month %$tag$)</li> - ($tag$% END %$tag$) - ($tag$% END %$tag$) - </ul> - </div> - ($tag$% END %$tag$) -</div> -</DefineVar> - -<DefineVar> -SEARCH_FORM - <div class="search_form"> - <form method="post" action="($tag$% path_cgi %$tag$)"> - <input name="list" type="hidden" value="($tag$% list %$tag$)" /> - <input name="archive_name" type="hidden" value="($tag$% archive_name %$tag$)" /> - <input name="how" type="hidden" value="phrase" /> - <input name="age" type="hidden" value="new" /> - <input name="case" type="hidden" value="off" /> - <input name="match" type="hidden" value="partial" /> - <input name="limit" type="hidden" value="10" /> - <input name="body" type="hidden" value="true" /> - <input name="subj" type="hidden" value="true" /> - <input id="key_word" name="key_word" type="text" size="12" /> - <input name="action" type="hidden" value="arcsearch" /> - <input type="submit" class="MainMenuLinks" name="action_arcsearch" value="($tag$%|loc%$tag$)Search($tag$%END%$tag$)" onClick="return isNotEmpty('key_word')" /> - <input type="submit" class="MainMenuLinks" name="action_arcsearch_form" value="($tag$%|loc%$tag$)Advanced search($tag$%END%$tag$)" /> - </form> - </div> -</DefineVar> - -<DefineVar> -TOP_PANEL -<div id="ActionHeader"> - $SEARCH_FORM$ - $CALENDAR$ - <div class="text_center"><strong>$PRINTABLE_MONTH$ $NUMOFMSG$ ($tag$%|loc%$tag$)mails($tag$%END%$tag$)</strong></div><br /> -<!-- ($tag$%|loc%$tag$)Pages navigation: ($tag$%END%$tag$)<br /> --> -</div> -</DefineVar> - -<DefineVar> -PRINTABLE_MONTH -($tag$%|locdt("$yyyy$/$mois$")%$tag$)%Y/%m($tag$%END%$tag$) -</DefineVar> - -<DefineVar> -SELECTED_MONTH -<P><font color="($tag$% dark_color %$tag$)" size="+1"><strong> -$PRINTABLE_MONTH$ -</strong></FONT><br /> -<HR width="30%"> -</P> -</DefineVar> - -<DefineVar> -POWERED_BY -<hr size="1" noshade> -<p><font size="-1"> -($tag$%|loc%$tag$)Archive powered by($tag$%END%$tag$) <a href="$DOCURL$">MHonArc $VERSION$</a>. -</font></p> -</DefineVar> - -<!-- ============================================================== --> -<!-- MIME Resources --> -<!-- ============================================================== --> - -<DECODEHEADS> - -<MIMEARGS> -text/plain; asis=us-ascii:iso-8859-1:iso-8859-2 nonfixed quote htmlcheck maxwidth=78 -text/html; asis=us-ascii:iso-8859-1:iso-8859-2 allownoncidurls -m2h_external::filter; subdir usename -</MIMEARGS> - -<CHARSETALIASES> -big5; big5 -big5; big5-eten -</CHARSETALIASES> - -<CharsetConverters override> -plain; mhonarc::htmlize -default; -decode- -</CharsetConverters> - - -<-- Need to also register UTF-8-aware text clipping function --> -<TextClipFunc> -MHonArc::UTF8::clip; MHonArc/UTF8.pm -</TextClipFunc> -<TextEncode> -utf-8; MHonArc::UTF8::to_utf8; MHonArc/UTF8.pm -</TextEncode> - -<!-- ============================================================== --> -<!-- Options --> -<!-- ============================================================== --> - -<!-- -It is good to be explicit when possible since a default resource file, -and/or environment variables, may be in affect. ---> - -<NOMAILTO> -<MULTIPG> -<NODOC> -<SORT> -<NOFOLREFS> - -<IDXSIZE> -30 -</IDXSIZE> - -<!-- should not be changed --> -<IDXFNAME> -mail1.html -</IDXFNAME> - -<!-- should not be changed --> -<TIDXFNAME> -thrd1.html -</TIDXFNAME> - -<!-- ============================================================== --> -<!-- Main index resources --> -<!-- ============================================================== --> - -<!-- -IDXPGSSMARKUP -IDXPGBEGIN - LISTBEGIN - (AUTHORBEGIN | - DAYBEGIN | - SUBJECTBEGIN)? - LITEMPLATE+ - (AUTHOREND | - DAYEND | - SUBJECTEND)? - LISTEND - DOC? -IDXPGEND ---> - -<!-- mail1.html --> -<IDXPGBEGIN> -[%TAGS ($tag$% %$tag$) %] - -<!-- begin header --> -<div id="ActionHeader"> - $SEARCH_FORM$ - $CALENDAR$ - <div class="text_center"><strong>$PRINTABLE_MONTH$ $NUMOFMSG$ ($tag$%|loc%$tag$)mails($tag$%END%$tag$)</strong></div><br /> -<!-- ($tag$%|loc%$tag$)Pages navigation: ($tag$%END%$tag$)<br /> --> - - <span class="search_form"> - <a class="ArcMenuLinksSortActive" href="mail$PAGENUM$.html">($tag$%|loc%$tag$)Chronological($tag$%END%$tag$)</a> - <a class="ArcMenuLinksSortInactive" href="thrd$PAGENUM$.html">($tag$%|loc%$tag$)Thread($tag$%END%$tag$)</a> - </span> - $PREVPGLINK$ ($tag$%|loc($PAGENUM$,$NUMOFPAGES$)%$tag$)page # %1/%2($tag$%END%$tag$) $NEXTPGLINK$ -</div> -<!-- end header --> -</IDXPGBEGIN> - -<!-- top of message list --> -<LISTBEGIN> -<br /> -($tag$% IF is_owner %$tag$)<form id="msglist" action="($tag$% path_cgi %$tag$)" method="post">($tag$%END%$tag$) -<ul> -</LISTBEGIN> - -<!-- item of maillist.html --> -<LITEMPLATE> -<li>($tag$% IF is_owner %$tag$)<input type="checkbox" name="msgid" value="$MSGID$" />($tag$%END%$tag$) - -<b>$SUBJECT$</b>, <em>$FROMNAME$</em></li> -</LITEMPLATE> - -<!-- bottom of message list --> -<LISTEND> -</ul><br /> -($tag$% IF is_owner %$tag$) -<input type="hidden" name="yyyy" value="$yyyy$" /> -<input type="hidden" name="month" value="$mois$" /> -<input type="hidden" name="action" value="remove_arc" /> -<input type="hidden" name="list" value ="($tag$% list %$tag$)" /> -<input class="MainMenuLinks" type="button" value="($tag$%|loc%$tag$)Toggle Selection($tag$%END%$tag$)" onclick="toggle_selection(document.forms['msglist'].msgid)" /> -<input type="submit" class="MainMenuLinks" name="action_remove_arc" value="($tag$%|loc%$tag$)Tag messages for deletion($tag$%END%$tag$)" onClick="return request_confirm('($tag$%|loc%$tag$)Do you really want to delete these messages ?($tag$%END%$tag$)')"/><br /> -<br /> - -</form> -($tag$%END%$tag$) -</LISTEND> - -<!-- maillist.html bottom --> -<IDXPGEND> -$POWERED_BY$ -($tag$%TAGS [% %]%$tag$) -</IDXPGEND> - -<!-- links definition --> -<PrevPgLink chop> -<a class="ArcMenuLinks" href="$FIRSTPG$"><<</a> -<a class="ArcMenuLinks" href="$PREVPG$"><</a> -</PrevPgLink> - -<PrevPgLinkIA chop> -<a class="ArcMenuLinksInactive"><<</a> -<a class="ArcMenuLinksInactive"><</a> -</PrevPgLinkIA> - -<NextPgLink chop> -<a class="ArcMenuLinks" href="$NEXTPG$">></a> -<a class="ArcMenuLinks" href="$LASTPG$">>></a> -</NextPgLink> - -<NextPgLinkIA chop> -<a class="ArcMenuLinksInactive">></a> -<a class="ArcMenuLinksInactive">>></a> -</NextPgLinkIA> - -<!-- ============================================================== --> -<!-- Thread index resources --> -<!-- ============================================================== --> - -<!-- -TIDXPGSSMARKUP -TIDXPGBEGIN - THEAD - ((TTOPBEGIN - TSUBLISTBEG - ((TLITXT - [possible subthread listing] - TLIEND)| - (TLINONE - [possible subthread listing] - TLINONEEND))+ - (TSUBJECTBEG - ((TLITXT - [possible subthread listing] - TLIEND)| - (TLINONE - [possible subthread listing] - TLINONEEND))+ - TSUBJECTEND)? - TSUBLISTEND - TTOPEND) - | - TSINGLETXT)* [message w/o references or follow-ups] - TFOOT - DOC? -TIDXPGEND ---> - -<!-- top of thread index --> -<TIDXPGBEGIN> -[%TAGS ($tag$% %$tag$) %] -</TIDXPGBEGIN> - -<THEAD> -<!-- begin header --> -<div id="ActionHeader"> - $SEARCH_FORM$ - $CALENDAR$ - <div class="text_center"><strong>$PRINTABLE_MONTH$ $NUMOFMSG$ ($tag$%|loc%$tag$)mails($tag$%END%$tag$)</strong></div><br /> - <!-- ($tag$%|loc%$tag$)Pages navigation: ($tag$%END%$tag$)<br /> --> - - <span class="search_form"> - <a class="ArcMenuLinksSortInactive" href="mail$PAGENUM$.html">($tag$%|loc%$tag$)Chronological($tag$%END%$tag$)</a> - <a class="ArcMenuLinksSortActive" href="thrd$PAGENUM$.html">($tag$%|loc%$tag$)Thread($tag$%END%$tag$)</a> - </span> - $TPREVPGLINK$ ($tag$%|loc($PAGENUM$,$NUMOFPAGES$)%$tag$)page # %1/%2($tag$%END%$tag$) $TNEXTPGLINK$ -</div> -<!-- end header --> - -($tag$% IF is_owner %$tag$)<form id="msglist" action="($tag$% path_cgi %$tag$)" method="post">($tag$%END%$tag$) -<ul> -</THEAD> - -<TSINGLETXT> -<li>($tag$% IF is_owner %$tag$)<input type="checkbox" name="msgid" value="$MSGID$" />($tag$%END%$tag$)<b>$SUBJECT$</b>, <em>$FROMNAME$, ($tag$%|locdt("$YYYYMMDD$")%$tag$)%m/%d/%Y($tag$%END%$tag$)</em> -</TSINGLETXT> - -<TTOPBEGIN> -<li>($tag$% IF is_owner %$tag$)<input type="checkbox" name="msgid" value="$MSGID$" />($tag$%END%$tag$)<b>$SUBJECT$</b>, <em>$FROMNAME$, ($tag$%|locdt("$YYYYMMDD$")%$tag$)%m/%d/%Y($tag$%END%$tag$)</em> -</TTOPBEGIN> - -<TLITXT> -<li>($tag$% IF is_owner %$tag$)<input type="checkbox" name="msgid" value="$MSGID$" />($tag$%END%$tag$)<b>$SUBJECT$</b>, <em>$FROMNAME$, ($tag$%|locdt("$YYYYMMDD$")%$tag$)%m/%d/%Y($tag$%END%$tag$)</em> -</TLITXT> - -<TTOPEND> -</li> -</TTOPEND> - -<TFOOT> -</ul> -($tag$% IF is_owner %$tag$) -<input type="hidden" name="yyyy" value="$yyyy$" /> -<input type="hidden" name="month" value="$mois$" /> -<input type="hidden" name="action" value="remove_arc" /> -<input type="hidden" name="list" value ="($tag$% list %$tag$)" /> -<input class="MainMenuLinks" type="button" value="($tag$%|loc%$tag$)Toggle Selection($tag$%END%$tag$)" onclick="toggle_selection(document.forms['msglist'].msgid)" /> -<input type="submit" class="MainMenuLinks" name="action_remove_arc" value="($tag$%|loc%$tag$)Tag messages for deletion($tag$%END%$tag$)" onClick="return request_confirm('($tag$%|loc%$tag$)Do you really want to delete these messages ?($tag$%END%$tag$)')"/><br /> -<br /> -</form> -($tag$%END%$tag$)<br /> -</TFOOT> - -<TIDXPGEND> -$POWERED_BY$ -($tag$%TAGS [% %]%$tag$) -</TIDXPGEND> - -<TCONTBEGIN> -<li><strong>$SUBJECTNA$</strong>($tag$%|loc%$tag$), <em>(continued)</em>($tag$%END%$tag$) -</TCONTBEGIN> - -<TSUBJECTBEG> -<li>($tag$%|loc%$tag$)<Possible follow-up(s)>($tag$%END%$tag$)</li> -</TSUBJECTBEG> - -<TLINONE> -<li>($tag$%|loc%$tag$)<em>Message not available</em>($tag$%END%$tag$) -</TLINONE> - -<!-- links definition --> -<TPrevPgLink chop> -<a class="ArcMenuLinks" href="$TFIRSTPG$"><<</a> -<a class="ArcMenuLinks" href="$TPREVPG$"><</a> -</TPrevPgLink> - -<TPrevPgLinkIA chop> -<a class="ArcMenuLinksInactive"><<</a> -<a class="ArcMenuLinksInactive"><</a> -</TPrevPgLinkIA> - -<TNextPgLink chop> -<a class="ArcMenuLinks" href="$TNEXTPG$">></a> -<a class="ArcMenuLinks" href="$TLASTPG$">>></a> -</TNextPgLink> - -<TNextPgLinkIA chop> -<a class="ArcMenuLinksInactive">></a> -<a class="ArcMenuLinksInactive">>></a> -</TNextPgLinkIA> - -<!-- ================================================================== --> -<!-- Message Page Resources --> -<!-- ================================================================== --> - -<!-- -MSGPGSSMARKUP -MSGPGBEGIN - MSGHEAD - TOPLINKS - SUBJECTHEADER - Converted message header - HEADBODYSEP - Converted message body - MSGBODYEND - (FOLUPBEGIN - FOLUPLITXT+ - FOLUPEND)? - (REFSBEGIN - REFSLITXT+ - REFSEND)? - BOTLINKS - MSGFOOT -MSGPGEND ---> - -<MSGPGBEGIN> -[%TAGS ($tag$% %$tag$) %] -</MSGPGBEGIN> - -<TOPLINKS> - -<div id="ActionHeader"> - <div class="text_center"><h2>($tag$% subtitle %$tag$)</h2></div><br /> - <span class="search_form"> - <a class="ArcMenuLinksSortInactive" href="$IDXFNAME$#$MSGNUM$">($tag$%|loc%$tag$)Chronological($tag$% END %$tag$)</a> - <a class="ArcMenuLinksSortInactive" href="$TIDXFNAME$#$MSGNUM$">($tag$%|loc%$tag$)Thread($tag$% END %$tag$)</a> - </span> - <ul id="MainMenuLinks"> - $PREVBUTTON$ ($tag$%|loc%$tag$)Chronological($tag$%END%$tag$) $NEXTBUTTON$ $TPREVBUTTON$ ($tag$%|loc%$tag$)Thread($tag$%END%$tag$) $TNEXTBUTTON$ - </ul> -</div> -<div> - -<!-- end header --> - -</TOPLINKS> - -<HEADBODYSEP> -</div> -<hr size="1" noshade> -</HEADBODYSEP> - -<MSGBODYEND> -<br clear="all" /> -<hr size="1" noshade> -$TSLICE(10;10;1)$ -</MSGBODYEND> - -<BOTLINKS> - -</BOTLINKS> - -<MSGPGEND> -$POWERED_BY$ -($tag$%TAGS [% %]%$tag$) -</MSGPGEND> - -<MSGPGSSMARKUP> -</MSGPGSSMARKUP> - -<SUBJECTHEADER> -($tag$% IF user.email && include_picture %$tag$) -<div id="pictures_block" style="float: left; padding: 0em; margin: 0em;"> -<div id="large"> -<img src="($tag$% include_picture %$tag$)" alt="($tag$%|loc%$tag$)picture($tag$%END%$tag$)" /> -</div> -</div> -($tag$% END %$tag$) -($tag$% IF user.email && action == 'arc' %$tag$) -<span class="search_form"> -<form action="($tag$% path_cgi %$tag$)" method="post"> - <input type="hidden" name="in_reply_to" value="$MSGID$" /> - <input type="hidden" name="subject" value="Re: $SUBJECTNA$" /> - <input type="hidden" name="list" value="($tag$% list %$tag$)" /> - ($tag$% IF list_conf.reply_to_header.apply == 'forced' %$tag$) - ($tag$% IF list_conf.reply_to_header.value == 'all' %$tag$) - <input type="hidden" name="to" value="$FROMADDRNAME:J$ $FROMADDRDOMAIN$,($tag$% list %$tag$) ($tag$% list_conf.host %$tag$)" /> - ($tag$% ELSIF list_conf.reply_to_header.value == 'other_email' %$tag$) - ($tag$% SET oemail = list_conf.reply_to_header.other_email %$tag$) - <input type="hidden" name="to" value="($tag$% oemail.replace('@',' ') %$tag$)" /> - ($tag$% ELSIF list_conf.reply_to_header.value == 'list' %$tag$) - <input type="hidden" name="to" value="($tag$% list %$tag$) ($tag$% list_conf.host %$tag$)" /> - ($tag$% ELSIF list_conf.reply_to_header.value == 'sender' %$tag$) - <input type="hidden" name="to" value="$FROMADDRNAME:J$ $FROMADDRDOMAIN$" /> - ($tag$% END %$tag$) - ($tag$% ELSE %$tag$) - ($tag$%|loc%$tag$)Reply to($tag$%END%$tag$) - <input id="to_sender" type="radio" name="to" - value="$FROMADDRNAME:J$ $FROMADDRDOMAIN$" - ($tag$% IF list_conf.reply_to_header.value == 'sender' %$tag$) - checked - ($tag$%END%$tag$) /> - <label for="to_sender">($tag$%|loc%$tag$)sender($tag$%END%$tag$)</label> - <input id="to_list" type="radio" name="to" - value="($tag$% list %$tag$) ($tag$% list_conf.host %$tag$)" - ($tag$% IF list_conf.reply_to_header.value == 'list' %$tag$) - checked - ($tag$%END%$tag$) /> - <label for="to_list">($tag$%|loc%$tag$)list($tag$%END%$tag$)</label> - <input id="to_both" type="radio" name="to" - value="$FROMADDRNAME:J$ $FROMADDRDOMAIN$,($tag$% list %$tag$) ($tag$% list_conf.host %$tag$)" - ($tag$% IF list_conf.reply_to_header.value == 'all' %$tag$) - checked - ($tag$%END%$tag$) /> - <label for="to_both">($tag$%|loc%$tag$)both($tag$%END%$tag$)</label> - ($tag$% END %$tag$) - <input class="MainMenuLinks" type="submit" name="action_compose_mail" value="($tag$%|loc%$tag$)Reply($tag$%END%$tag$)" /><br /> - <input class="MainMenuLinks" type="submit" name="action_send_me" value="($tag$%|loc(user.email)%$tag$)send it back to %1($tag$%END%$tag$)" /><br /> - <input type="hidden" name="yyyy" value="$yyyy$" /> - <input type="hidden" name="month" value="$mois$" /> - <input type="hidden" name="msgid" value="$MSGID$" /> - <input type="hidden" name="action" value="" /> - ($tag$% IF user.email == '$FROMADDRNAME:J$@$FROMADDRDOMAIN$' || is_owner %$tag$) - <input class="MainMenuLinks" type="submit" name="action_remove_arc" value="($tag$%|loc%$tag$)tag this mail for deletion($tag$%END%$tag$)" onClick="return request_confirm('($tag$%|loc%$tag$)Do you really want to delete this message ?($tag$%END%$tag$)')" /> - ($tag$% END %$tag$) - ($tag$% IF is_owner %$tag$) - <br /><input class="MainMenuLinks" type="submit" name="action_view_source" value="($tag$%|loc%$tag$)view source($tag$%END%$tag$)" /> - ($tag$% END %$tag$) -</form> -</span> - -($tag$% END %$tag$) - -<div class="block"> - - -</SUBJECTHEADER> - -<!-- Message itself --> -<!-- Do not display the following header --> -<EXCS Override> -content- -errors-to -forward -lines -mime- -message-id -nntp- -originator -path -precedence -received -replied -return-path -status -via -x- -sender -list-help -list-owner -list-post -list-subscribe -list-unsubscribe -in-reply-to -delivered-to -references -reply-to -thread- -User-agent -Mail-followup-to -Dkim-signature -</EXCS> - -<!-- Field order in message header --> -<FIELDORDER> -from -to -cc -subject -date --extra- -</FIELDORDER> - -<LABELSTYLES> -From:strong -To:strong -Subject:strong --default-:strong -</LABELSTYLES> - -<TSLICELEVELS> -7 -</TSLICELEVELS> - -<TSLICE> -10:10 -</TSLICE> - -<TSLICEBEG> -<UL> -</TSLICEBEG> - -<TSLICETOPBEGINCUR> -<LI><STRONG>$SUBJECTNA$</STRONG>, <EM>$FROMNAME$, ($tag$%|locdt("$YYYYMMDD$")%$tag$)%m/%d/%Y($tag$%END%$tag$)</EM> -</TSLICETOPBEGINCUR> - -<TSLICELITXTCUR> -<LI><STRONG>$SUBJECTNA$</STRONG>, <EM>$FROMNAME$, ($tag$%|locdt("$YYYYMMDD$")%$tag$)%m/%d/%Y($tag$%END%$tag$)</EM> -</TSLICELITXTCUR> - -<TSLICESINGLETXTCUR> -<LI><STRONG>$SUBJECTNA$</STRONG>, <EM>$FROMNAME$, ($tag$%|locdt("$YYYYMMDD$")%$tag$)%m/%d/%Y($tag$%END%$tag$)</EM> -</TSLICESINGLETXTCUR> - -<TSLICEEND> -</UL> -</TSLICEEND> - -<!-- Buttons definition --> -<PREVBUTTON> -<a class="ArcMenuLinks" href="$PREVMSG$"><</a> -</PREVBUTTON> - -<PREVBUTTONIA> -<a class="ArcMenuLinksInactive"><</a> -</PREVBUTTONIA> - -<NEXTBUTTON> -<a class="ArcMenuLinks" href="$NEXTMSG$">></a> -</NEXTBUTTON> - -<NEXTBUTTONIA> -<a class="ArcMenuLinksInactive">></a> -</NEXTBUTTONIA> - -<TPREVBUTTON> -<a class="ArcMenuLinks" href="$TPREVMSG$"><</a> -</TPREVBUTTON> - -<TPREVBUTTONIA> -<a class="ArcMenuLinksInactive"><</a> -</TPREVBUTTONIA> - -<TNEXTBUTTON> -<a class="ArcMenuLinks" href="$TNEXTMSG$">></a> -</TNEXTBUTTON> - -<TNEXTBUTTONIA> -<a class="ArcMenuLinksInactive">></a> -</TNEXTBUTTONIA> - -<!-- ============================================================== --> -<!-- Other Resources --> -<!-- ============================================================== --> - -<DAYBEGIN> -<LI><STRONG>($tag$%|locdt("$YYYYMMDD$")%$tag$)%y/%m/%d($tag$%END%$tag$)</STRONG> -<UL> -</DAYBEGIN> - -<DAYEND> -</UL> -</LI> -</DAYEND> - -<WEEKDAYS> -($tag$%|loc%$tag$)Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday($tag$%END%$tag$) -</WEEKDAYS> - -($tag$% IF lang == 'cs' %$tag$) -<WEEKDAYSABR> -Ne:Po:Út:St:Čt:Pá:So -</WEEKDAYSABR> -($tag$% ELSIF lang == 'hu' %$tag$) -<WEEKDAYSABR> -V:H:K:Sz:Cs:P:Szo -</WEEKDAYSABR> -($tag$% ELSIF lang == 'et' %$tag$) -<WEEKDAYSABR> -P:M:T:K:N:R:L -</WEEKDAYSABR> -($tag$% ELSE %$tag$) -<WEEKDAYSABR> -($tag$%|loc%$tag$)Sun:Mon:Tue:Wed:Thu:Fri:Sat($tag$%END%$tag$) -</WEEKDAYSABR> -($tag$% END %$tag$) - -<MONTHS> -($tag$%|loc%$tag$)January:February:March:April:May:June:July:August:September:October:November:December($tag$%END%$tag$) -</MONTHS> - -($tag$% IF lang == 'cs' %$tag$) -<MONTHSABR> -Led:Úno:Bře:Dub:Kvě:Čern:Červ:Srp:Zář:Říj:List:Pro -</MONTHSABR> -($tag$% ELSIF lang == 'hu' %$tag$) -<MONTHSABR> -Jan:Feb:Már:Ápr:Máj:Jún:Júl:Aug:Szep:Okt:Nov:Dec -</MONTHSABR> -($tag$% ELSIF lang == 'et' %$tag$) -<MONTHSABR> -Jan:Veeb:Mär:Apr:Mai:Juun:Juul:Aug:Sep:Okt:Nov:Dets -</MONTHSABR> -($tag$% ELSE %$tag$) -<MONTHSABR> -($tag$%|loc%$tag$)Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec($tag$%END%$tag$) -</MONTHSABR> -($tag$% END %$tag$) - -($tag$% IF lang == 'cs' %$tag$) -<UseLocalTime> - -<MSGLOCALDATEFMT> -%d. %B. %Y %H:%M -</MSGLOCALDATEFMT> - -<LOCALDATEFMT> -%d. %B. %Y %H:%M -</LOCALDATEFMT> - -($tag$% ELSIF lang == 'hu' %$tag$) -<UseLocalTime> - -<MSGLOCALDATEFMT> -%Y. %B %d., %A %H:%M -</MSGLOCALDATEFMT> - -<LOCALDATEFMT> -%Y. %B %d., %A %H:%M -</LOCALDATEFMT> - -($tag$% ELSIF lang == 'et' %$tag$) -<UseLocalTime> - -<MSGLOCALDATEFMT> -%Y. %B %d., %A %H:%M -</MSGLOCALDATEFMT> - -<LOCALDATEFMT> -%Y. %B %d., %A %H:%M -</LOCALDATEFMT> - -($tag$% ELSE %$tag$) -<MsgLocalDateFmt> -%A %d %B %Y -</MsgLocalDateFmt> - -($tag$% END %$tag$) diff --git a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.closed b/sympa-6.1.20-src/src/etc/scenari/access_web_archive.closed deleted file mode 100644 index 26146aaab2b2f3b493d6ccf090938ddc63ca937d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.closed +++ /dev/null @@ -1,5 +0,0 @@ -title.gettext closed - -true() smime,md5 -> reject(reason='web_archive_closed') - - diff --git a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.intranet b/sympa-6.1.20-src/src/etc/scenari/access_web_archive.intranet deleted file mode 100644 index 6887e5f56a1dc913f701110749d229604897ff2d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.intranet +++ /dev/null @@ -1,8 +0,0 @@ -title.gettext restricted to local domain users - -is_subscriber([listname],[sender]) md5,smime -> do_it -is_listmaster([sender]) md5,smime -> do_it -match ([env->remote_host],/[conf->host]$/) md5,smime -> do_it -match([sender],/[conf->host]$/) md5,smime -> do_it -true() md5,smime -> reject(reason='web_archive_local_user_sub') - diff --git a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.listmaster b/sympa-6.1.20-src/src/etc/scenari/access_web_archive.listmaster deleted file mode 100644 index b650617d4191683cd21e5e70d5b36d40d78366f2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.listmaster +++ /dev/null @@ -1,4 +0,0 @@ -title.gettext listmaster - -is_listmaster([sender]) md5,smime -> do_it -true() md5,smime -> reject(reason='web_archive_listmaster') diff --git a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.owner b/sympa-6.1.20-src/src/etc/scenari/access_web_archive.owner deleted file mode 100644 index e3fefb014c3ed32c6b298ff6f70e146aacc3989a..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.owner +++ /dev/null @@ -1,5 +0,0 @@ -title.gettext by owner - -is_owner([listname],[sender]) md5,smime -> do_it -is_listmaster([sender]) md5,smime -> do_it -true() md5,smime -> reject(reason='web_archive_owner') diff --git a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.private b/sympa-6.1.20-src/src/etc/scenari/access_web_archive.private deleted file mode 100644 index f0a0ae9df8631133f312a72baf44dd5b89a73c22..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.private +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext subscribers only - -is_subscriber([listname],[sender]) md5,smime -> do_it -is_owner([listname],[sender]) md5,smime -> do_it -is_listmaster([sender]) md5,smime -> do_it -true() md5,smime -> reject(reason='web_archive_subscriber') diff --git a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.public b/sympa-6.1.20-src/src/etc/scenari/access_web_archive.public deleted file mode 100644 index 97ddf26656b4a0c7b6d45d03b58b2a3a38cd6b28..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/access_web_archive.public +++ /dev/null @@ -1,5 +0,0 @@ -title.gettext public - -true() md5,smime -> do_it - - diff --git a/sympa-6.1.20-src/src/etc/scenari/automatic_list_creation.public b/sympa-6.1.20-src/src/etc/scenari/automatic_list_creation.public deleted file mode 100644 index b3b506e15fafefe2d4fd5e2803b432e780c140e5..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/automatic_list_creation.public +++ /dev/null @@ -1,3 +0,0 @@ -title.gettext anybody. Be sure you know what you are doing - -true() smtp,dkim,md5,smime -> do_it diff --git a/sympa-6.1.20-src/src/etc/scenari/create_list.intranet b/sympa-6.1.20-src/src/etc/scenari/create_list.intranet deleted file mode 100644 index f273e1aba8ecd15e6ba3fddaffe05985be0b0cd5..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/create_list.intranet +++ /dev/null @@ -1,8 +0,0 @@ -title.gettext anyone from local domain - -is_listmaster([sender]) md5,smime -> do_it -# this is example of a rule to check local adresses -# verify_netmask('1.12.123.0/24') smtp,md5,smime -> do_it -match([sender],/[conf->host]$/) md5,smime -> listmaster,notify -true() smtp,md5,smime -> reject(reason='create_list_local_user') - diff --git a/sympa-6.1.20-src/src/etc/scenari/create_list.listmaster b/sympa-6.1.20-src/src/etc/scenari/create_list.listmaster deleted file mode 100644 index 84a60185431f9f84705cb7b7b947fe48a8b20d58..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/create_list.listmaster +++ /dev/null @@ -1,4 +0,0 @@ -title.gettext restricted to listmaster - -is_listmaster([sender]) md5,smime -> do_it -true() smtp,md5,smime -> reject(reason='create_list_listmaster') diff --git a/sympa-6.1.20-src/src/etc/scenari/create_list.public_listmaster b/sympa-6.1.20-src/src/etc/scenari/create_list.public_listmaster deleted file mode 100644 index 01292b7223e3b94c058dae985bd76ecb1924c8f8..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/create_list.public_listmaster +++ /dev/null @@ -1,4 +0,0 @@ -title.gettext anybody by validation by listmaster required - -is_listmaster([sender]) md5,smime -> do_it -true() smtp,md5,smime -> listmaster,notify diff --git a/sympa-6.1.20-src/src/etc/scenari/d_edit.editor b/sympa-6.1.20-src/src/etc/scenari/d_edit.editor deleted file mode 100644 index f9800f9aaa5a880ea67b0d4d0e3de304b470bcd5..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_edit.editor +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext moderated for subscribers - -is_subscriber([listname],[sender]) smime,md5 -> editor -is_editor([listname],[sender]) smime,md5 -> do_it -is_owner([listname],[sender]) smime,md5 -> do_it -true() md5,smime -> reject(reason='d_edit_subscriber') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_edit.owner b/sympa-6.1.20-src/src/etc/scenari/d_edit.owner deleted file mode 100644 index 0bdbfeb4af599e2ba889ee8d5d9241e23a4b2cb9..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_edit.owner +++ /dev/null @@ -1,4 +0,0 @@ -title.gettext restricted to list owners - -is_owner([listname],[sender]) smime,md5 -> do_it -true() md5,smime -> reject(reason='d_edit_owner') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_edit.private b/sympa-6.1.20-src/src/etc/scenari/d_edit.private deleted file mode 100644 index 3d189d8f05e1e57a0108555073d454ce9e4dbdc7..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_edit.private +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext restricted to subscribers - -is_subscriber([listname],[sender]) smime,md5 -> do_it -is_editor([listname],[sender]) smime,md5 -> do_it -is_owner([listname],[sender]) smime,md5 -> do_it -true() md5,smime -> reject(reason='d_edit_subscriber') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_edit.private-https b/sympa-6.1.20-src/src/etc/scenari/d_edit.private-https deleted file mode 100644 index 971c00915b8cc43b55b5938fd7831d03508309a2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_edit.private-https +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext restricted to subscribers authenticated with user cert - -is_subscriber([listname],[sender]) smime -> do_it -is_editor([listname],[sender]) smime -> do_it -is_owner([listname],[sender]) smime -> do_it -true() md5,smime -> reject(reason='_edit_subscriber_https') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_edit.public b/sympa-6.1.20-src/src/etc/scenari/d_edit.public deleted file mode 100644 index 6a9f8618cf922069cdbd458d9c0d7b9249a46ffb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_edit.public +++ /dev/null @@ -1,7 +0,0 @@ -title.gettext public documents - -true() smime,md5 -> do_it - - - - diff --git a/sympa-6.1.20-src/src/etc/scenari/d_read.owner b/sympa-6.1.20-src/src/etc/scenari/d_read.owner deleted file mode 100644 index 42e65c26a044068daafa91b18958fa89428cdd1b..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_read.owner +++ /dev/null @@ -1,4 +0,0 @@ -title.gettext restricted to list owners - -is_owner([listname],[sender]) smime,md5 -> do_it -true() md5,smime -> reject(reason='d_read_owner') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_read.private b/sympa-6.1.20-src/src/etc/scenari/d_read.private deleted file mode 100644 index 72ccb882dafcaf7980a875f273f330f27bbf8c14..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_read.private +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext restricted to subscribers - -is_subscriber([listname],[sender]) smime,md5 -> do_it -is_editor([listname],[sender]) smime,md5 -> do_it -is_owner([listname],[sender]) smime,md5 -> do_it -true() md5,smime -> reject(reason='d_read_subscriber') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_read.private-https b/sympa-6.1.20-src/src/etc/scenari/d_read.private-https deleted file mode 100644 index c0498882256a9734b64e26684eed4db03f287b0e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_read.private-https +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext restricted to subscribers authenticated with user cert - -is_subscriber([listname],[sender]) smime -> do_it -is_editor([listname],[sender]) smime -> do_it -is_owner([listname],[sender]) smime -> do_it -true() md5,smime -> reject(reason='d_read_subscriber_https') diff --git a/sympa-6.1.20-src/src/etc/scenari/d_read.public b/sympa-6.1.20-src/src/etc/scenari/d_read.public deleted file mode 100644 index 6a9f8618cf922069cdbd458d9c0d7b9249a46ffb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/d_read.public +++ /dev/null @@ -1,7 +0,0 @@ -title.gettext public documents - -true() smime,md5 -> do_it - - - - diff --git a/sympa-6.1.20-src/src/etc/scenari/info.conceal b/sympa-6.1.20-src/src/etc/scenari/info.conceal deleted file mode 100644 index 40488a3ca198e0561cafa6a9083e43b51dbbfd61..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/info.conceal +++ /dev/null @@ -1,7 +0,0 @@ -title.gettext restricted to subscribers - Silent rejection otherwise. - -is_subscriber([listname],[sender]) smtp,md5,smime -> do_it -is_listmaster([sender]) smtp,md5,smime -> do_it -is_owner([listname],[sender]) smtp,md5,smime -> do_it -is_editor([listname],[sender]) smtp,md5,smime -> do_it -true() smtp,md5,smime -> reject diff --git a/sympa-6.1.20-src/src/etc/scenari/info.open b/sympa-6.1.20-src/src/etc/scenari/info.open deleted file mode 100644 index c04ccc3a67d75782e87dc3d1b9a2aebfca3ac3ab..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/info.open +++ /dev/null @@ -1,3 +0,0 @@ -title.gettext for anyone - -true() smtp,md5,smime -> do_it diff --git a/sympa-6.1.20-src/src/etc/scenari/info.private b/sympa-6.1.20-src/src/etc/scenari/info.private deleted file mode 100644 index fa626363666a2185b97a4cee7462abdd2f418418..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/info.private +++ /dev/null @@ -1,7 +0,0 @@ -title.gettext restricted to subscribers - -is_subscriber([listname],[sender]) smtp,md5,smime -> do_it -is_listmaster([sender]) smtp,md5,smime -> do_it -is_owner([listname],[sender]) smtp,md5,smime -> do_it -is_editor([listname],[sender]) smtp,md5,smime -> do_it -true() smtp,md5,smime -> reject(reason='info_subscriber') diff --git a/sympa-6.1.20-src/src/etc/scenari/send.private_smime b/sympa-6.1.20-src/src/etc/scenari/send.private_smime deleted file mode 100644 index 3a6213b63955f956b13f44cb2501ebc31d8baa48..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/send.private_smime +++ /dev/null @@ -1,6 +0,0 @@ -title.gettext restricted to subscribers and checked smime signature - -is_subscriber([listname],[sender]) smime -> do_it -is_editor([listname],[sender]) smime -> do_it -is_owner([listname],[sender]) smime -> do_it -true() smtp,dkim,md5,smime -> reject(reason='send_subscriber_smime') diff --git a/sympa-6.1.20-src/src/etc/scenari/subscribe.auth_owner b/sympa-6.1.20-src/src/etc/scenari/subscribe.auth_owner deleted file mode 100644 index 516764860ac5b6eb8648c2f563ed23b2921bb496..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/subscribe.auth_owner +++ /dev/null @@ -1,8 +0,0 @@ -title.gettext requires authentication then owner approval - -# subscription under owner control but previously email are checked by auth -true() smtp,dkim -> request_auth -is_subscriber([listname],[previous_email]) md5,smime -> do_it -true() md5,smime -> owner - - diff --git a/sympa-6.1.20-src/src/etc/scenari/subscribe.open b/sympa-6.1.20-src/src/etc/scenari/subscribe.open deleted file mode 100644 index b0b233e5877dddf8252a4d18d39207464f0d0b1f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/subscribe.open +++ /dev/null @@ -1,3 +0,0 @@ -title.gettext for anyone without authentication - -true() smtp,dkim,smime,md5 -> do_it diff --git a/sympa-6.1.20-src/src/etc/scenari/subscribe.owner b/sympa-6.1.20-src/src/etc/scenari/subscribe.owner deleted file mode 100644 index 602de0cfd60ef93ce8ebce901756d9073f543044..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/src/etc/scenari/subscribe.owner +++ /dev/null @@ -1,8 +0,0 @@ -title.gettext owners approval - -# if subscriber request come from a subscriber, it's just an update, do it -is_subscriber([listname],[sender]) smtp,smime,md5 -> do_it -# if subscribtion request is just a change email, it is open : -is_subscriber([listname],[previous_email]) smtp,smime,md5 -> do_it -true() smtp,dkim,smime,md5 -> owner - diff --git a/sympa-6.1.20-src/web_tt2/Makefile.am b/sympa-6.1.20-src/web_tt2/Makefile.am deleted file mode 100644 index e6e91b5674519c0eb574a26e9dffc67995b34e11..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/Makefile.am +++ /dev/null @@ -1,167 +0,0 @@ -# Makefile - This Makefile does the web templates installation -# RCS Identication ; $Revision: 10083 $ ; $Date: 2014-01-01 01:12:12 +0100 (mer. 01 janv. 2014) $ -# -# Sympa - SYsteme de Multi-Postage Automatique -# -# Copyright (c) 1997, 1998, 1999 Institut Pasteur & Christophe Wolfhugel -# 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 GIP RENATER -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -webtemplate_DATA = active_lists.tt2 \ - add_request.tt2 \ - admin_menu.tt2 \ - admin.tt2 \ - arc_manage.tt2 \ - arc_protect.tt2 \ - arcsearch_form.tt2 \ - arcsearch.tt2 \ - arc.tt2 \ - auto_signoff.tt2 \ - automatic_lists_management_request.tt2 \ - automatic_lists_request.tt2 \ - automatic_lists.tt2 \ - blacklist.tt2 \ - button_footer.tt2 \ - button_header.tt2 \ - ca.tt2 \ - change_email.tt2 \ - change_email_request.tt2 \ - choosepasswd.tt2 \ - close_list.tt2 \ - compose_mail.tt2 \ - copy_template.tt2 \ - create_list_request.tt2 \ - create_list.tt2 \ - css.tt2 \ - css_ie.tt2 \ - d_control.tt2 \ - d_editfile.tt2 \ - d_install_shared.tt2 \ - d_properties.tt2 \ - d_read.tt2 \ - dump_scenario.tt2 \ - dumpvars.tt2 \ - d_upload.tt2 \ - edit_attributes.tt2 \ - edit_config.tt2 \ - editfile.tt2 \ - edit_list_request.tt2 \ - editsubscriber.tt2 \ - edit_template.tt2 \ - error.tt2 \ - exclusion_table.tt2 \ - family_signoff.tt2 \ - family_signoff_request.tt2 \ - footer.tt2 \ - get_closed_lists.tt2 \ - get_inactive_lists.tt2 \ - get_latest_lists.tt2 \ - get_pending_lists.tt2 \ - help_admin.tt2 \ - help_arc.tt2 \ - help_editfile.tt2 \ - help_editlist.tt2 \ - help_faqadmin.tt2 \ - help_faquser.tt2 \ - help_introduction.tt2 \ - help_listconfig.tt2 \ - help_mail_commands.tt2 \ - help_sendmsg.tt2 \ - help_shared.tt2 \ - help_suspend.tt2 \ - help.tt2 \ - help_user_options.tt2 \ - help_user.tt2 \ - home.tt2 \ - info.tt2 \ - install_pending_list.tt2 \ - javascript.tt2 \ - latest_arc.tt2 \ - latest_d_read.tt2 \ - latest_lists.tt2 \ - lca.tt2 \ - list_button_footer.tt2 \ - list_button_header.tt2 \ - list_menu.tt2 \ - list_panel.tt2 \ - lists.tt2 \ - loginbanner.tt2 \ - login_menu.tt2 \ - loginrequest.tt2 \ - login.tt2 \ - ls_templates.tt2 \ - maintenance.tt2 \ - main.tt2 \ - manage_template.tt2 \ - menu.tt2 \ - menu_search.tt2 \ - modindex.tt2 \ - nav.tt2 \ - notice.tt2 \ - picture_upload.tt2 \ - pref.tt2 \ - remove_arc.tt2 \ - rename_list_request.tt2 \ - renewpasswd.tt2 \ - requestpasswd.tt2 \ - request_topic.tt2 \ - reviewbouncing.tt2 \ - review_family.tt2 \ - review.tt2 \ - rss_request.tt2 \ - rss.tt2 \ - scenario_test.tt2 \ - search_user.tt2 \ - serveradmin.tt2 \ - setlang.tt2 \ - set_pending_list_request.tt2 \ - show_cert.tt2 \ - show_exclude.tt2 \ - show_sessions.tt2 \ - sigrequest.tt2 \ - skinsedit.tt2 \ - sso_login.tt2 \ - stats.tt2 \ - subindex.tt2 \ - suboptions.tt2 \ - subrequest.tt2 \ - subscriber_table.tt2 \ - suspend_request.tt2 \ - ticket.tt2 \ - title.tt2 \ - tt2_error.tt2 \ - viewbounce.tt2 \ - viewlogs.tt2 \ - viewmod.tt2 \ - view_template.tt2 \ - your_lists.tt2 - -localetemplates = ja_JP/css.tt2 ko_KR/css.tt2 zh_CN/css.tt2 zh_TW/css.tt2 - -EXTRA_DIST = $(webtemplate_DATA) $(localetemplates) - -install-data-hook: - for t in $(localetemplates); do \ - dir=`dirname $$t`; \ - [ -n "$$dir" ] && \ - install -d -m 755 $(DESTDIR)$(webtemplatedir)/$$dir; \ - $(INSTALL_DATA) $$t $(DESTDIR)$(webtemplatedir)/$$dir; \ - done - cd $(DESTDIR)$(webtemplatedir); \ - $(LN_S) -f review.tt2 search.tt2; \ - $(LN_S) -f lists.tt2 which.tt2; \ - $(LN_S) -f lists.tt2 search_list.tt2 diff --git a/sympa-6.1.20-src/web_tt2/Makefile.in b/sympa-6.1.20-src/web_tt2/Makefile.in deleted file mode 100644 index 1b23811bfca8cb67ea884459d60123b03452c124..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/Makefile.in +++ /dev/null @@ -1,516 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Makefile - This Makefile does the web templates installation -# RCS Identication ; $Revision: 10083 $ ; $Date: 2014-01-01 01:12:12 +0100 (mer. 01 janv. 2014) $ -# -# Sympa - SYsteme de Multi-Postage Automatique -# -# Copyright (c) 1997, 1998, 1999 Institut Pasteur & Christophe Wolfhugel -# 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 GIP RENATER -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -subdir = web_tt2 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(webtemplatedir)" -webtemplateDATA_INSTALL = $(INSTALL_DATA) -DATA = $(webtemplate_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAT = @CAT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFIG = @CONFIG@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EXEEXT = @EXEEXT@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GROUP = @GROUP@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MAKEMAP = @MAKEMAP@ -MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ -MSGMERGE = @MSGMERGE@ -NEWALIASES = @NEWALIASES@ -NEWALIASES_ARG = @NEWALIASES_ARG@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -POD2MAN = @POD2MAN@ -POSTALIAS = @POSTALIAS@ -POSTMAP = @POSTMAP@ -POSTMAP_ARG = @POSTMAP_ARG@ -SED = @SED@ -SENDMAIL_ALIASES = @SENDMAIL_ALIASES@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USER = @USER@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -VIRTUAL_ALIASES = @VIRTUAL_ALIASES@ -WWSCONFIG = @WWSCONFIG@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -ac_ct_CC = @ac_ct_CC@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -arcdir = @arcdir@ -bindir = @bindir@ -bouncedir = @bouncedir@ -build_alias = @build_alias@ -confdir = @confdir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -defaultdir = @defaultdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -execcgidir = @execcgidir@ -expldir = @expldir@ -host_alias = @host_alias@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -initdir = @initdir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lockdir = @lockdir@ -mailtemplatedir = @mailtemplatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -modulesdir = @modulesdir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -piddir = @piddir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -scriptdir = @scriptdir@ -sharedstatedir = @sharedstatedir@ -spooldir = @spooldir@ -staticdir = @staticdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -webtemplatedir = @webtemplatedir@ -webtemplate_DATA = active_lists.tt2 \ - add_request.tt2 \ - admin_menu.tt2 \ - admin.tt2 \ - arc_manage.tt2 \ - arc_protect.tt2 \ - arcsearch_form.tt2 \ - arcsearch.tt2 \ - arc.tt2 \ - auto_signoff.tt2 \ - automatic_lists_management_request.tt2 \ - automatic_lists_request.tt2 \ - automatic_lists.tt2 \ - blacklist.tt2 \ - button_footer.tt2 \ - button_header.tt2 \ - ca.tt2 \ - change_email.tt2 \ - change_email_request.tt2 \ - choosepasswd.tt2 \ - close_list.tt2 \ - compose_mail.tt2 \ - copy_template.tt2 \ - create_list_request.tt2 \ - create_list.tt2 \ - css.tt2 \ - css_ie.tt2 \ - d_control.tt2 \ - d_editfile.tt2 \ - d_install_shared.tt2 \ - d_properties.tt2 \ - d_read.tt2 \ - dump_scenario.tt2 \ - dumpvars.tt2 \ - d_upload.tt2 \ - edit_attributes.tt2 \ - edit_config.tt2 \ - editfile.tt2 \ - edit_list_request.tt2 \ - editsubscriber.tt2 \ - edit_template.tt2 \ - error.tt2 \ - exclusion_table.tt2 \ - family_signoff.tt2 \ - family_signoff_request.tt2 \ - footer.tt2 \ - get_closed_lists.tt2 \ - get_inactive_lists.tt2 \ - get_latest_lists.tt2 \ - get_pending_lists.tt2 \ - help_admin.tt2 \ - help_arc.tt2 \ - help_editfile.tt2 \ - help_editlist.tt2 \ - help_faqadmin.tt2 \ - help_faquser.tt2 \ - help_introduction.tt2 \ - help_listconfig.tt2 \ - help_mail_commands.tt2 \ - help_sendmsg.tt2 \ - help_shared.tt2 \ - help_suspend.tt2 \ - help.tt2 \ - help_user_options.tt2 \ - help_user.tt2 \ - home.tt2 \ - info.tt2 \ - install_pending_list.tt2 \ - javascript.tt2 \ - latest_arc.tt2 \ - latest_d_read.tt2 \ - latest_lists.tt2 \ - lca.tt2 \ - list_button_footer.tt2 \ - list_button_header.tt2 \ - list_menu.tt2 \ - list_panel.tt2 \ - lists.tt2 \ - loginbanner.tt2 \ - login_menu.tt2 \ - loginrequest.tt2 \ - login.tt2 \ - ls_templates.tt2 \ - maintenance.tt2 \ - main.tt2 \ - manage_template.tt2 \ - menu.tt2 \ - menu_search.tt2 \ - modindex.tt2 \ - nav.tt2 \ - notice.tt2 \ - picture_upload.tt2 \ - pref.tt2 \ - remove_arc.tt2 \ - rename_list_request.tt2 \ - renewpasswd.tt2 \ - requestpasswd.tt2 \ - request_topic.tt2 \ - reviewbouncing.tt2 \ - review_family.tt2 \ - review.tt2 \ - rss_request.tt2 \ - rss.tt2 \ - scenario_test.tt2 \ - search_user.tt2 \ - serveradmin.tt2 \ - setlang.tt2 \ - set_pending_list_request.tt2 \ - show_cert.tt2 \ - show_exclude.tt2 \ - show_sessions.tt2 \ - sigrequest.tt2 \ - skinsedit.tt2 \ - sso_login.tt2 \ - stats.tt2 \ - subindex.tt2 \ - suboptions.tt2 \ - subrequest.tt2 \ - subscriber_table.tt2 \ - suspend_request.tt2 \ - ticket.tt2 \ - title.tt2 \ - tt2_error.tt2 \ - viewbounce.tt2 \ - viewlogs.tt2 \ - viewmod.tt2 \ - view_template.tt2 \ - your_lists.tt2 - -localetemplates = ja_JP/css.tt2 ko_KR/css.tt2 zh_CN/css.tt2 zh_TW/css.tt2 -EXTRA_DIST = $(webtemplate_DATA) $(localetemplates) -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign web_tt2/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign web_tt2/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -install-webtemplateDATA: $(webtemplate_DATA) - @$(NORMAL_INSTALL) - test -z "$(webtemplatedir)" || $(mkdir_p) "$(DESTDIR)$(webtemplatedir)" - @list='$(webtemplate_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(webtemplateDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(webtemplatedir)/$$f'"; \ - $(webtemplateDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(webtemplatedir)/$$f"; \ - done - -uninstall-webtemplateDATA: - @$(NORMAL_UNINSTALL) - @list='$(webtemplate_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(webtemplatedir)/$$f'"; \ - rm -f "$(DESTDIR)$(webtemplatedir)/$$f"; \ - done -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/ja_JP $(distdir)/ko_KR $(distdir)/zh_CN $(distdir)/zh_TW - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(webtemplatedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-webtemplateDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am uninstall-webtemplateDATA - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-data-hook install-exec install-exec-am install-info \ - install-info-am install-man install-strip \ - install-webtemplateDATA installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ - uninstall-am uninstall-info-am uninstall-webtemplateDATA - - -install-data-hook: - for t in $(localetemplates); do \ - dir=`dirname $$t`; \ - [ -n "$$dir" ] && \ - install -d -m 755 $(DESTDIR)$(webtemplatedir)/$$dir; \ - $(INSTALL_DATA) $$t $(DESTDIR)$(webtemplatedir)/$$dir; \ - done - cd $(DESTDIR)$(webtemplatedir); \ - $(LN_S) -f review.tt2 search.tt2; \ - $(LN_S) -f lists.tt2 which.tt2; \ - $(LN_S) -f lists.tt2 search_list.tt2 -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/sympa-6.1.20-src/web_tt2/active_lists.tt2 b/sympa-6.1.20-src/web_tt2/active_lists.tt2 deleted file mode 100644 index 3359e343ca7214510478de7670e64accf2a0a758..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/active_lists.tt2 +++ /dev/null @@ -1,43 +0,0 @@ -<!-- $Id: active_lists.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<h2 class="block"> <strong> - [% IF count %] - [%|loc(count)%] The %1 most active lists [%END%] - [% ELSE %] - [%|loc%] Active lists [%END%] - [% END %] - - [% IF for %] - [%|loc(for)%] for %1 days [%END%] - [% END %] -</strong> </h2> - -<br /> - -<table class="listOfItems" summary="[%|loc(count)%] The %1 most active lists [%END%][%|loc(for)%] for %1 days [%END%]"> -<tr class="color_light"> - <th id="list_name"><strong>[%|loc%]List name[%END%]</strong></th> - <th id="message"><strong>[%|loc%]Number of messages[%END%]</strong></th> - <th id="average"><strong>[%|loc%]Average per day[%END%]</strong></th> - <th id="date"><strong>[%|loc%]Creation date[%END%]</strong></th> - <th id="subject"><strong>[%|loc%]Subject[%END%]</strong></th> - </tr> - -[% SET dark = '0' %] -[% FOREACH l = active_lists %] - [% IF dark == '1' %]<tr>[% SET dark = '0' %][% ELSE %]<tr class="color0">[% SET dark = '1' %][% END %] - - <td headers="list_name"> - <a href="[% path_cgi %]/info/[% l.name %]" ><strong>[% hidden_head %][% l.name %][% hidden_at %][% l.host %][% hidden_end %]</strong></a> - </td> - <td class="text_center" headers="message"> [% l.msg_count %] </td> - <td class="text_center" headers="average"> [% l.average %] </td> - <td headers="date"> [% l.date %] </td> - <td headers="subject"> [% l.subject %] </td> - </tr> - - [% END %] - -</table> - -<!-- end active_lists.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/add_request.tt2 b/sympa-6.1.20-src/web_tt2/add_request.tt2 deleted file mode 100644 index c35cf8c4a142b77c256bc2cc227ab09e8e209c7a..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/add_request.tt2 +++ /dev/null @@ -1,16 +0,0 @@ -<!-- $Id: add_request.tt2 5401 2008-11-28 15:59:56Z david.verdin $ --> - - <form action="[% path_cgi %]" method="post" class="add-request" name="multipleadd"> - <fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="used" id="used" value="false" /> - <textarea name="dump" id="dump" cols="80" rows="25" onclick="empty_field('dump','used');" >[%|loc%]email1@dom1 Name1[%END%] -[%|loc%]email2@dom2 Name2[%END%] -... - </textarea> - <br /> - <input class="MainMenuLinks" type="submit" name="action_add" value="[%|loc%]Add subscribers[%END%]" /> - <input id="quiet" type="checkbox" name="quiet" /> <label for="quiet">[%|loc%]quiet[%END%]</label> - </fieldset> - </form> -<!-- end add_request.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/admin.tt2 b/sympa-6.1.20-src/web_tt2/admin.tt2 deleted file mode 100644 index a2a0d6745391de0fe5c1417fd91ca1c5ecb07830..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/admin.tt2 +++ /dev/null @@ -1,83 +0,0 @@ -<!-- $Id: admin.tt2 9958 2013-11-27 13:55:15Z sympa-authors $ --> -<div class="block"> - -<h2>[%|loc%]Casual administration[%END%]</h2> - -<ul> -[% IF is_listmaster || is_owner %] - <li><strong><a href="[% path_cgi %]/edit_list_request/[% list %]">[%|loc%]Edit list config:[%END%]</a></strong> [%|loc%]Use it with care: it allows you to modify some of the list parameters. The list of the parameters you can modify depends on your privileges.[%END%]</li> - <li><strong><a href="[% path_cgi %]/editfile/[% list %]">[%|loc%]Customizing: [%END%]</a></strong> [%|loc%]Editing of various files and messages attached to your list.[%END%]</li> -[% END %] -[% IF is_listmaster || is_owner || may_del %] - <li><strong><a href="[% path_cgi %]/review/[% list %]">[%|loc%]Manage subscribers:[%END%]</a></strong> [%|loc%]Allows you to add or delete list subscribers, moderate subscriptions and so on.[%END%]</li> - [% IF conf.use_blacklist != 'none' %] - <li><strong><a href="[% path_cgi %]/blacklist/[% list %]" >[%|loc%]Blacklist:[%END%]</a></strong> [%|loc%]Handles the set of black-listed mail addresses for this list.[%END%]</li> - [% END %] -[% END %] -[% IF is_listmaster || is_owner %] -[% IF is_archived %] - <li><strong><a href="[% path_cgi %]/arc_manage/[% list %]">[%|loc%]Manage archives:[%END%]</a></strong> [%|loc%]Allows you to download and delete list archives.[%END%]</li> -[% END %] -[% IF is_listmaster || is_owner || ( is_editor && may_review ) %] - <li><strong><a href="[% path_cgi %]/reviewbouncing/[% list %]">[%|loc%]Bounces:[%END%]</a></strong> [%|loc%]Manages non-delivery reports (also called bounces).[%END%]</li> -[% END %] -[% IF is_priv || is_listmaster %] - <li><strong><a href="[% path_cgi %]/viewlogs/[% list %]/first" >[%|loc%]Logs:[%END%]</a></strong> [%|loc%]A tool for exploring the list logs.[%END%]</li> -[% END %] -[% END %] -</ul> - -[% IF is_listmaster || is_owner || is_privileged_owner %] -<h2>[%|loc%]Drastic operations[%END%]</h2> - -[% IF is_privileged_owner %] -<div> -<form name="manage_list_status" action="[% path_cgi %]" method="post"> -<fieldset> - [% IF list_conf.status == 'closed' %] - <input class="MainMenuLinks" type="submit" name="action_restore_list" value="[%|loc%]Restore List[%END%]" onClick="return request_confirm('[% FILTER escape_quote %][%|loc(list)%]Are you sure you wish to restore list %1?[%END%][%END%]');"/> [%|loc%]This list is currently closed. Clicking this button will make it active again.[%END%] - <input type="hidden" name="list" value="[% list %]"/> - [% ELSE %] - <input class="MainMenuLinks" type="submit" name="action_close_list" value="[%|loc%]Remove List[%END%]" onClick="return request_confirm('[% FILTER escape_quote %][%|loc(list)%]Are you sure you wish to close list %1?[%END%][%END%]');"/> [%|loc%]Completely removes the current list. Listmaster privileges are required to restore a list.[%END%] - <input type="hidden" name="list" value="[% list %]"/> - [% END %] -</fieldset> -</form> -</div><br/> -<div> -<form name="manage_list_name" action="[% path_cgi %]" method="post"> -<fieldset> - [% IF may_create_list %] - <input class="MainMenuLinks" type="submit" name="action_rename_list_request" value="[%|loc%]Rename List[%END%]"/> [%|loc%]Allows you to change this list's name. Everything related to the list will be relabeled according to the new name, including the mail aliases and the web archives.[%END%] - <input type="hidden" name="list" value="[% list %]"/> - [% END %] -</fieldset> -</form> -</div><br/> -[% END %] - -[% IF is_listmaster || is_owner %] -<div> -<form name="manage_shared_status" action="[% path_cgi %]" method="post"> -<fieldset> -[% IF shared == 'none' %] - <input class="MainMenuLinks" type="submit" name="action_d_admin" value="[%|loc%]Create Shared[%END%]"/> [%|loc%]Initializes the shared document web space.[%END%] - <input type="hidden" name="list" value="[% list %]"/> - <input type="hidden" name="d_admin" value="create"/> -[% ELSIF shared == 'exist' %] - <input class="MainMenuLinks" type="submit" name="action_d_admin" value="[%|loc%]Delete Shared[%END%]" onClick="return request_confirm('[% FILTER escape_quote %][%|loc(listname)%]Are you sure you wish to delete the shared documents for list %1?[%END%][%END%]');"/> [%|loc%]Closes the shared document web space. It can be restored using "Restore shared" button.[%END%]</li> - <input type="hidden" name="list" value="[% list %]"/> - <input type="hidden" name="d_admin" value="delete"/> -[% ELSIF shared == 'deleted' %] - <input class="MainMenuLinks" type="submit" name="action_d_admin" value="[%|loc%]Restore Shared[%END%]"/> [%|loc%]Restores the previously closed shared document web space.[%END%]</li> - <input type="hidden" name="list" value="[% list %]"/> - <input type="hidden" name="d_admin" value="restore"/> -[% END %] -</fieldset> -</form> -</div><br/> -[% END %] -[% END %] - -</div> -<!-- end admin.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/admin_menu.tt2 b/sympa-6.1.20-src/web_tt2/admin_menu.tt2 deleted file mode 100644 index 862f6b25bd9393402eb27f10997a39aa25d3f38c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/admin_menu.tt2 +++ /dev/null @@ -1,176 +0,0 @@ -<!-- $Id: admin_menu.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - - <td style="background: [% color_4 %]; text-align: center;" colspan="9"> - <span style="color: [% color_13 %]"><strong>[%|loc%]List Administration Panel[%END%]</strong></span> - </td> - </tr> - <tr> - [% IF action == 'review' %] - <td style="background: [% color_4 %]; text-align: center;"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Subscribers[%END%]</strong></span> - </td> - [% ELSE %] - <td style="background: [% color_9 %]; text-align: center;"> - [% IF is_owner %] - <a href="[% path_cgi %]/review/[% list %]"> - <span style="font-size: smaller;"><strong>[%|loc%]Subscribers[%END%]</strong></span></a> - [% END %] - </td> - [% END %] - - [% IF action == 'edit_list_request' %] - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Edit List Config[%END%]</strong></span></a> - </td> - [% ELSE %] - <td style="background: [% color_9 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]"> - <span style="font-size: smaller;"><strong>[%|loc%]Edit List Config[%END%]</strong></span></a> - </td> - [% END %] - - [% IF action == 'modindex' %] - <td style="background: [% color_4 %]; text-align: center;"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Moderate[%END%]</strong></span> - </td> - [% ELSE %] - [% IF is_editor %] - <td style="background: [% color_9 %]; text-align: center;"> - <a href="[% path_cgi %]/modindex/[% list %]"> - <span style="font-size: smaller;"><strong>[%|loc%]Moderate[%END%]</strong></span></a> - </td> - [% ELSE %] - <td style="background: [% color_9 %]; text-align: center;"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Moderate[%END%]</strong></span> - </td> - [% END %] - [% END %] - - [% IF action == 'editfile' %] - <td style="background: [% color_4 %]; text-align: center;"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Customizing[%END%]</strong></span> - </td> - [% ELSE %] - <td style="background: [% color_9 %]; text-align: center;"> - [% IF is_owner %] - <a href="[% path_cgi %]/editfile/[% list %]"> - <span style="font-size: smaller;"><strong>[%|loc%]Customizing[%END%]</strong></span></a> - [% END %] - </td> - [% END %] - - [% IF is_archived %] - [% IF action == 'arc_manage' %] - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/arc_manage/[% list %]"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Manage Archives[%END%]</strong></span></a> - </td> - [% ELSE %] - <td style="background: [% color_9 %]; text-align: center;"> - [% IF is_owner %] - <a href="[% path_cgi %]/arc_manage/[% list %]"> - <span style="font-size: smaller;"><strong>[%|loc%]Manage Archives[%END%]</strong></span></a> - [% END %] - </td> - [% END %] - [% END %] - - [% IF action == 'reviewbouncing' %] - <td style="background: [% color_4 %]; text-align: center;"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Bounces[%END%]</strong></span> - </td> - [% ELSE %] - <td style="background: [% color_9 %]; text-align: center;"> - [% IF is_owner %] - <a href="[% path_cgi %]/reviewbouncing/[% list %]"> - <span style="font-size: smaller;"><strong>[%|loc%]Bounces[%END%]</strong></span></a> - [% END %] - </td> - [% END %] - - <td style="background: [% color_9 %]; text-align: center;"> - [% IF shared == 'none' %] - [% IF is_privileged_owner %] - <a href="[% path_cgi %]/d_admin/[% list %]/create"> - <span style="font-size: smaller;"><strong>[%|loc%]Create Shared[%END%]</strong></span></a> - [% ELSE %] - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Create Shared[%END%]</strong></span> - [% END %] - [% ELSIF shared == 'deleted' %] - <a href="[% path_cgi %]/d_admin/[% list %]/restore"> - <span style="font-size: smaller;"><strong>[%|loc%]Restore shared[%END%]</strong></span></a> - [% ELSIF shared == 'exist' %] - <a href="[% path_cgi %]/d_admin/[% list %]/delete" > - <span style="font-size: smaller;"><strong>[%|loc%]Delete Shared[%END%]</strong></span></a> - [% ELSE %] - <span style="font-size: smaller; color: red;"> - [% shared %] - </span> - [% END %] - </td> - - <td style="background: [% color_9 %]; text-align: center;"> - [% IF list_conf.status == 'closed' %] - [% IF is_listmaster %] - <a href="[% path_cgi %]/restore_list/[% list %]" > - <span style="font-size: smaller;"><strong>[%|loc%]Restore List[%END%]</strong></span></a> - [% ELSE %] - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Restore List[%END%]</strong></span> - [% END %] - [% ELSIF is_privileged_owner %] - <a href="[% path_cgi %]/close_list/[% list %]" onclick="request_confirm_link('[% path_cgi %]/close_list/[% list %]', '[% FILTER escape_quote %][%|loc(list)%]Are you sure you wish to close %1 list?[%END%][%END%]'); return false;"><span style="font-size: smaller;"><strong>[%|loc%]Remove List[%END%]</strong></span></a> - [% ELSIF is_owner %] - <a href="[% path_cgi %]/close_list/[% list %]" onclick="request_confirm_link('[% path_cgi %]/close_list/[% list %]', '[% FILTER escape_quote %][%|loc(list)%]Are you sure you wish to close %1 list?[%END%][%END%]'); return false;"><span style="font-size: smaller;"><strong>[%|loc%]Remove List[%END%]</strong></span></a> - [% END %] - </td> - <td style="background: [% color_9 %]; text-align: center;"> - [% IF may_create_list %] - <a href="[% path_cgi %]/rename_list_request/[% list %]"><span style="font-size: smaller;"><strong>[%|loc%]Rename List[%END%]</strong></span></a> - [% ELSE %] - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Rename List[%END%]</strong></span> - [%END%] - </td> - [% IF action == 'edit_list_request' %] - </tr> - <tr> - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/description"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]List Definition[%END%]</strong></span></a> - </td> - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/sending"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Sending/Receiving[%END%]</strong></span></a> - </td> - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/command"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Privileges[%END%]</strong></span></a> - </td> - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/archives"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Archives[%END%]</strong></span></a> - </td> - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/bounces"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Bounce Settings[%END%]</strong></span></a> - </td> - - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/other"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Miscellaneous[%END%]</strong></span></a> - </td> - <td style="background: [% color_4 %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/data_source"> - <span style="font-size: smaller; color: [% color_13 %];"><strong>[%|loc%]Data Source[%END%]</strong></span></a> - </td> - [% END %] - [% IF action == 'edit_attributes' %] - </tr> - <tr> - <td style="background: [% selected_color %]; text-align: center;"> - <a href="[% path_cgi %]/edit_list_request/[% list %]/description"> - <span style="font-size: smaller; color: [% bg_color %];"><strong>[%|loc%]Attribute optionnal/required[%END%]</strong></span></a> - </td> - [% END %] -<!-- end admin_menu.tt2 --> - diff --git a/sympa-6.1.20-src/web_tt2/arc.tt2 b/sympa-6.1.20-src/web_tt2/arc.tt2 deleted file mode 100644 index f440211a170400dc00c02ab7cac4507019bdb3fc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/arc.tt2 +++ /dev/null @@ -1,13 +0,0 @@ -<!-- $Id: arc.tt2 5735 2009-05-13 14:21:17Z lumineau $ --> -<!-- begin : this part is generated by mhonarc using mhonarc-ressources.tt2 --> -<div class="block"> -<h2>[%|loc%]List archive[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/arc" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> -<br /> - -[% IF file_handle %] - [% PROCESS $file_handle %] -[% END %] - -</div> -<!-- end of part generated by mhonarc --> -<!-- end arc.tt2 --> \ No newline at end of file diff --git a/sympa-6.1.20-src/web_tt2/arc_manage.tt2 b/sympa-6.1.20-src/web_tt2/arc_manage.tt2 deleted file mode 100644 index 21c85abd9237a2a43aa0a5788f08ef0b61b060b9..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/arc_manage.tt2 +++ /dev/null @@ -1,31 +0,0 @@ -<!-- $Id: arc_manage.tt2 5675 2009-04-28 13:59:12Z david.verdin $ --> -<div class="block"> - -<h2>[%|loc%]Archive Management[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#manage_archives" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> -<br /> -[%|loc%]Select below Archives months you want to delete or download (ZiP format):[%END%] - - - -<form class="noborder" name="zip_form" method="post" action="[% path_cgi %]"> -<fieldset> -<label for="directories">[%|loc%]Archive Selection:[%END%]</label><br /> -<select name="directories" id="directories" multiple="multiple" size="4"> - - [% FOREACH u = yyyymm %] - <option value="[% u %]">[% u %]</option> - - [% END %] - -</select> -<input name="list" type="hidden" value="[% list %]" /> -<input name="zip" type="hidden" value="0" /><br /> -<input class="MainMenuLinks" type="submit" name="action_arc_download" value="[%|loc%]DownLoad ZipFile[%END%]" /> -<input class="MainMenuLinks" type="submit" name="action_arc_delete" value="[%|loc%]Delete Selected Month(s)[%END%]" onclick="return dbl_confirm(this.form,'[% FILTER escape_quote %][%|loc%]Do you really want to delete Selected Archives?[%END%][%END%]','[% FILTER escape_quote %][%|loc%]Do you want to DownLoad a Zip of the selected Archives?[%END%][%END%]')" /> -</fieldset> -</form> - -<hr /> - -</div> -<!-- end arc_manage.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/arc_protect.tt2 b/sympa-6.1.20-src/web_tt2/arc_protect.tt2 deleted file mode 100644 index 349ffcb16ab7440b0ecdfbe1f8708086575312fc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/arc_protect.tt2 +++ /dev/null @@ -1,13 +0,0 @@ -<!-- $Id: arc_protect.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="not_a_sniffer" value="1" /> - <input class="MainMenuLinks" type="submit" name="action_arc" value="[%|loc%]I am not a spammer[%END%]" /> - </fieldset> - </form> - <br /> - <em>[%|loc%]This button aims at protecting mailing lists archives against Spam Harvester.[%END%]</em> - -<!-- end arc_protect.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/arcsearch.tt2 b/sympa-6.1.20-src/web_tt2/arcsearch.tt2 deleted file mode 100644 index 20ff171561f3855024291666ac8ba39332d68a3f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/arcsearch.tt2 +++ /dev/null @@ -1,146 +0,0 @@ -<!-- $Id: arcsearch.tt2 7432 2012-06-23 07:50:34Z sikeda $ --> -<div class="block"> - -<h2>[%|loc%]Result of your search in the archive[%END%] -<a href="[% path_cgi %]/arc/[% list %]/[% archive_name %]"><span class="color_dark">[% list %]:</span></a> </h2> - -<p>[%|loc%]Search field:[%END%] -[% FOREACH u = directories %] - <a href="[% path_cgi %]/arc/[% list %]/[% u %]"><span class="color_dark">[% u %]</font></a> - -[% END %] -</p> -<p> -[%|loc(key_word)%]Parameters of these search make on <strong> "%1":</strong>[%END%]<br> -<em> - -[% IF how == 'phrase' %] - [%|loc%](This sentence,[%END%] -[% ELSIF how == 'any' %] - [%|loc%](All of these words,[%END%] -[% ELSE %] - [%|loc%](Each of these words,[%END%] -[% END %] - -[% IF case == 'off' %] - [%|loc%]case insensitive[%END%] -[% ELSE %] - [%|loc%]case sensitive[%END%] -[% END %] - -[% IF match == 'partial' %] - [%|loc%]and checking on part of word)[%END%] -[% ELSE %] - [%|loc%]and checking on entire word)[%END%] -[% END %] -</em> -</p> - -<hr /> - -[% IF age == 'new' %] - <p><strong>[%|loc%]Newest messages first[%END%]</strong></p> -[% ELSE %] - <p><strong>[%|loc%]Oldest messages first[%END%]</strong></p> -[% END %] - -<ul> -<dl> -[% FOREACH u = res %] - <dt><li><b><a href=[% u.file %]> -[%- FOREACH r = u.rich.subj -%] - [%- IF r.format == 'b' %]<b>[% r.text %]</b> - [%- ELSIF r.format == 'br' %]<br /> - [%- ELSE%][% r.text %][%END%][%END -%] -</a></b> -- <em> -[%- FOREACH r = u.rich.date -%] - [%- IF r.format == 'b' %]<b>[% r.text %]</b> - [%- ELSIF r.format == 'br' %]<br /> - [%- ELSE%][% r.text %][%END%][%END -%] -</em><dd> -[%- FOREACH r = u.rich.from -%] - [%- IF r.format == 'b' %]<b>[% r.text %]</b> - [%- ELSIF r.format == 'br' %]<br /> - [%- ELSE%][% r.text %][%END%][%END -%] -<pre> -[%- FOREACH r = u.rich.body_string -%] - [%- IF r.format == 'b' %]<b>[% r.text %]</b> - [%- ELSIF r.format == 'br' %]<br /> - [%- ELSE%][% r.text %][%END%][%END -%] -</pre></dd> -[% END %] -</dl> -</ul> -<p> -<dl> - -[% IF body %] - <dd>[%|loc(body_count)%]%1 hits on message Body[%END%]<br /></dd> -[% END %] - -[% IF subj %] - <dd>[%|loc(subj_count)%]%1 hits on message Subject field[%END%]<br /></dd> -[% END %] - -[% IF from %] - <dd>[%|loc(from_count)%] %1 hits on message From field[%END%]<br /></dd> -[% END %] - -[% IF date %] - <dd>[%|loc(date_count)%]%1 hits on message Date field[%END%]<br /></dd> -[% END %] - -</dl> - -<form method="post" action="[% path_cgi %]" class="noborder"> -<fieldset> -<input type="hidden" name="list" value="[% list %]" /> -<input type="hidden" name="archive_name" value="[% archive_name %]" /> -<input type="hidden" name="key_word" value="[% key_word %]" /> -<input type="hidden" name="how" value="[% how %]" /> -<input type="hidden" name="age" value="[% age %]" /> -<input type="hidden" name="case" value="[% case %]" /> -<input type="hidden" name="match" value="[% match %]" /> -<input type="hidden" name="limit" value="[% limit %]" /> -<input type="hidden" name="body_count" value="[% body_count %]" /> -<input type="hidden" name="date_count" value="[% date_count %]" /> -<input type="hidden" name="from_count" value="[% from_count %]" /> -<input type="hidden" name="subj_count" value="[% subj_count %]" /> -<input type="hidden" name="previous" value="[% searched %]" /> - -[% IF body %] - <input type="hidden" name="body" value="[% body %]" /> -[% END %] - -[% IF subj %] - <input type="hidden" name="subj" value="[% subj %]" /> -[% END %] - -[% IF from %] - <input type="hidden" name="from" value="[% from %]" /> -[% END %] - -[% IF date %] - <input type="hidden" name="date" value="[% date %]" /> -[% END %] - -[% FOREACH u = directories %] - <input type="hidden" name="directories" value="[% u %]" /> -[% END %] - -[% IF continue %] - <input class="MainMenuLinks" name="action_arcsearch" type="submit" value="[%|loc%]Continue search[%END%]" /> -[% END %] -<p class="text_center" > -<input style="padding:0.1em 5em!important;" class="MainMenuLinks" name="action_arcsearch_form" type="submit" value="[%|loc%]New search[%END%]" /> -</p> -</fieldset> -</form> -<hr /> -<p>[%|loc%]Based on <em><a href="http://www.mhonarc.org/contrib/marc-search/">Marc-Search</a></em>, search engine of MHonArc archives[%END%]</p> - - -<a class="actionMenuLinks" href="[% path_cgi %]/arc/[% list %]/[% archive_name %]">[%|loc(archive_name)%]Return to archive %1[%END%] -</a><br /> - -</div> -<!-- end arcsearch.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/blacklist.tt2 b/sympa-6.1.20-src/web_tt2/blacklist.tt2 deleted file mode 100644 index 0f874b34e0a1d3e2c19ebde182b6f558c14e2cbd..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/blacklist.tt2 +++ /dev/null @@ -1,48 +0,0 @@ -<!-- $Id: blacklist.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> -<div class="block"> - -<h2>[%|loc%]Blacklist management[%END%]</h2><br /> - -<div id="blacklist"> -[%|loc%]Operation requested by users which email is listed in the blacklist file are rejected. The -blacklist is in use for the following operation:[%END%] [% conf.use_blacklist %]. -<br /><br /> -[%|loc%]Syntax:[%END%] -<ul> - <li>[%|loc%]only one email or expression by line[%END%]</li> - <li>[%|loc%]char # introduce a comment[%END%]</li> - <li>[%|loc%]char * match any string. Example: "*@spammer-domain.com" match any sender from that exact domain[%END%]</li> - <li>[%|loc%]only one char * is autorized in a line[%END%]</li> -</ul> -[%end%] -<p> -[% IF rows == '0' %] - [%|loc%]The current blacklist is empty[%END%] -[% ELSE %] - [%|loc(rows)%]The current blacklist contains %1 line(s)[%END%] -[% END %] -</p> - -[% IF rows < '10' %] [% rows = '10' %] [% END %] -[% IF rows > '20' %] [% rows = '20' %] [% END %] -[% rows = rows+2 %] -<form class="noborder" action="[% path_cgi %]/blacklist" method="post"> -<fieldset> - <textarea name="blacklist" cols="80" rows="[% rows %]"> -[% blacklist %] - </textarea><br /> -<input type="hidden" name="action" value="blacklist" /> -[% IF list %] - <input type="hidden" name="list" value="[% list %]" /> -[% END %] -<br /><input type="submit" class="MainMenuLinks" name="action_blacklist" value="[%|loc%]save[%END%]" /> -[% IF saved %] -[%|loc%]Template saved[%END%] ([% time %]) <br /><br /> -[% END %] - -</fieldset> -</form> -</div> - -</div> -<!-- end blacklist.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/button_footer.tt2 b/sympa-6.1.20-src/web_tt2/button_footer.tt2 deleted file mode 100644 index fb602ff294289ed8158ad854381b622d9bf864af..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/button_footer.tt2 +++ /dev/null @@ -1,7 +0,0 @@ -<!-- $Id: button_footer.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - </tr> - </table> - </td> - </tr> - </table> -<!-- end button_footer.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/button_header.tt2 b/sympa-6.1.20-src/web_tt2/button_header.tt2 deleted file mode 100644 index 451d7931848db4ee9f7cd1445f9360e103ff6303..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/button_header.tt2 +++ /dev/null @@ -1,5 +0,0 @@ -<!-- $Id: button_header.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - <table border="0" cellpadding="0" cellspacing="1"><tr><td style="background: [% color_4 %];" valign="top"> - <table border="0" style="width: auto; vertical-align: top;" cellspacing="1" cellpadding="2"> - <tr> - <!-- end button_header.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/change_email.tt2 b/sympa-6.1.20-src/web_tt2/change_email.tt2 deleted file mode 100644 index 533352771f56d0e8325a661af3702856a9be4992..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/change_email.tt2 +++ /dev/null @@ -1,5 +0,0 @@ -<!-- $Id: change_email.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - -[%|loc%]You will receive a n email, with a confirmation link.[%END%]<br /> -[%|loc%]To confirm your email address change, go to your email account and click on the provided link[%END%] -<!-- end change_email.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/change_email_request.tt2 b/sympa-6.1.20-src/web_tt2/change_email_request.tt2 deleted file mode 100644 index 3180be92ebd058058d9f57301e5292d06b5e3e09..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/change_email_request.tt2 +++ /dev/null @@ -1,7 +0,0 @@ -<!-- $Id: change_email_request.tt2 3907 2008-08-08 14:50:16Z peter.hart $ --> - -[%|loc%]Changing your email address is a sensitive operation so we need to verify your email.[%END%]<br /> -[%|loc(new_email)%]To this end we have sent you an email to this address: %1 with a validation link.[%END%]<br /> -[%|loc%]You shoukd check your mailbox now.[%END%] - -<!-- end change_email_request.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/choosepasswd.tt2 b/sympa-6.1.20-src/web_tt2/choosepasswd.tt2 deleted file mode 100644 index bad5c1b60a23a8db5e5afbc685646e44c5a49bf9..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/choosepasswd.tt2 +++ /dev/null @@ -1,17 +0,0 @@ -<!-- $Id: choosepasswd.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - -[%|loc%]You need to choose a password for your WWSympa environment. -You will need this password to perform privileged operations.[%END%] -<br /> -<form action="[% path_cgi %]" method="post"> -<fieldset> -<input type="hidden" name="previous_action" value="[% previous_action %]" /> -<input type="hidden" name="previous_list" value="[% previous_list %]" /> - - <br /><br /><label for="newpasswd1">[%|loc%]New password:[%END%]</label><input id="newpasswd1" type="password" name="newpasswd1" size="15" /><br /> - <br /><label for="newpasswd2">[%|loc%]New password again:[%END%]</label><input id="newpasswd2" type="password" name="newpasswd2" size="15" /><br /> - <br /><input class="MainMenuLinks" type="submit" name="action_setpasswd" value="[%|loc%]Submit[%END%]" /> -</fieldset> -</form> - -<!-- end choosepasswd.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/close_list.tt2 b/sympa-6.1.20-src/web_tt2/close_list.tt2 deleted file mode 100644 index 716d5940bf01bacff2e6c3033f846ac0d5edea14..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/close_list.tt2 +++ /dev/null @@ -1,11 +0,0 @@ -<!-- $Id: close_list.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - -<strong>[% list %]</strong> [%|loc%]list has been closed. Its subscribers have been deleted from -the subscriber database. The list is no longer public on the site.[%END%] -<br /><br /> -[% IF auto_aliases %] - [%|loc%]List aliases have been removed.[%END%] -[% ELSE %] - [%|loc%]You should remove list aliases manually[%END%] -[% END %] -<!-- end close_list.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/compose_mail.tt2 b/sympa-6.1.20-src/web_tt2/compose_mail.tt2 deleted file mode 100644 index 60570c1fa68f80e47f854277eb482d19c6f1c615..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/compose_mail.tt2 +++ /dev/null @@ -1,88 +0,0 @@ -<!-- $Id: compose_mail.tt2 10024 2013-12-22 02:29:41Z sikeda $ --> -<div class="block"> - -[% IF !subaction %] - <h2>[%|loc%]Sending a message to the list[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/sendmsg" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3> - <br /> -[% END %] - -<form class="noborder" action="[% path_cgi %]" method="post" name="compose_mail"> - -[% IF subaction == "html_news_letter" %] - <h2>[%|loc%]Sending an html page to the list [%END%] <a class="input" href="[% path_cgi %]/nomenu/help/sendmsg" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3> - <br /> - -[% END %] - - - <fieldset> - [%|loc(user.email)%]From: %1[%END%]<br /> - [%|loc(mailto)%]To: %1[%END%]<br /> - <label for="subject">[%|loc%]Subject:[%END%] <input id="subject" type="text" size="45" name="subject" value="[% subject %]" /></label> - [% IF subaction == "html_news_letter" %] - <input type="hidden" name="html_news_letter" value="[% subaction %]" /> - [% END %] - <input type="hidden" name="action" value="send_mail"/> - <input class="MainMenuLinks" type="submit" name="sub_action_sendmailtolist" value="[%|loc%]Send to selected receipient[%END%]" [%- IF topic_required -%] onclick="return checkbox_check_topic(compose_mail)" [% END %]/> - <input class="MainMenuLinks" type="submit" name="sub_action_sendmailtome" value="[%|loc%]Send to me[%END%]" [%- IF topic_required -%] onclick="return checkbox_check_topic(compose_mail)" [% END %]/> - <br /> - - <input type="hidden" name="in_reply_to" value="[% in_reply_to %]" /> - <input type="hidden" name="message_id" value="[% message_id %]" /> - <input type="hidden" name="list" value="[% list %]" /> - [% SET counter = 0 %] - [% SET stringto = '' %] - [% FOREACH r = recipients %] - [% IF counter == 0 %] - [% stringto = r.value.local_to _ ' ' _ r.value.domain_to %] - [% counter = 1 %] - [% ELSE %] - [% stringto = stringto _ ',' _ r.value.local_to _ ' ' _ r.value.domain_to %] - [% END %] - [% END %] - <input type="hidden" name="to" value="[% stringto %]" /> - - [% IF request_topic %] - <br /> - [%|loc%]This list is configured to require topic(s).[%END%] - <br /> - [%|loc%]Please select one or more topic(s) that corresponds to your message:[%END%] - <br /> - [% FOREACH t = available_topics %] - <input id="topic_[%t.name%]" type="checkbox" name="topic_[%t.name%]" value="1"/> <label for="topic_[%t.name%]">[% t.title %]</label> - <br /> - [% END %] - <br /> - [% END %] - - [% IF !subaction %] - [% balise_email = '['_'%'_' user.email '_'%'_']' %] - [% balise_fingerprint = '['_'%'_' user.fingerprint '_'%'_']' %] - <textarea name="body" cols="80" rows="25"></textarea> - <br /> - - [% IF merge_feature %] - <br /> - <b>[%|loc%]Messages customization: use the template syntax:[%END%] <a href="http://www.tt2.org">TT2</a></b><br /> - [%|loc%]Below are some examples of TT2 parameters usable in messages.[%END%]<br/> - <ul> - <li> <b>[% listname %]</b>[%|loc%]: the listname; always available.[%END%]</li> - <li> <b>[% robot %]</b>[%|loc%]: the name of the host the list is intalled on; always available.[%END%]</li> - <li> <b>[% user.email %]</b>[%|loc%]: the user email; always available.[%END%]</li> - <li> <b>[% user.gecos %]</b>[%|loc%]: the user name associated to her email; always available.[%END%]</li> - <li> <b>[% user.friendly_date %]</b>[%|loc%]: the - human readable - user's subscription date; always available.[%END%]</li> - <li> <b>[% user.custom_attribute.title.value %]</b>[%|loc%]: can be anything you like; available if you defined a user custom attribute named "title" (see the list configuration, section "Miscellaneous").[%END%]</li> - <li> <b>[% user.custom_attribute.name.value %]</b>[%|loc%]: can be anything you like; available if you defined a user custom attribute named "name".[%END%]</li> - <li> <b>[% user.custom_attribute.organization.value %]</b>[%|loc%]: can be anything you like; available if you defined a user custom attribute named "organization".[%END%]</li> - </ul> - [% END %] - [% END %] - [% IF subaction == "html_news_letter" %] - <label for="url">[%|loc%]URL:[%END%] <input id="url" type="text" size="45" name="url" value="[% url %]" /></label> - <br /><br /> - [% END %] - </fieldset> -</form> - -</div> -<!-- end compose_mail.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/copy_template.tt2 b/sympa-6.1.20-src/web_tt2/copy_template.tt2 deleted file mode 100644 index 4e35ff177c7814fbd404d84db17f6ee9d86f170e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/copy_template.tt2 +++ /dev/null @@ -1,70 +0,0 @@ -<!-- $Id: copy_template.tt2 10058 2013-12-26 04:48:43Z sikeda $ --> - -<h2>[%|loc%]Copying template[%END%]</h2><br /> -<p> -<form id="cp_template" action="[% path_cgi %]/copy_template" method="post"> -<fieldset> - <legend><strong> [%|loc%]Input template[%END%]</strong> </legend> - <label>[%|loc%]Template name: [%END%]</label><strong> [% template_name %] </strong><br /> - <label>[%|loc%]Scope: [%END%]</label>[% SWITCH scope -%] -[% CASE 'distrib' %]<strong> [%|loc%]default[%END%] </strong> -[%|loc%](this template is the default included in the distribution)[%END%] -[% CASE 'site' %]<strong> [%|loc%]site[%END%] </strong> -[%|loc%](this template is the default used by all robots unless redefined for a specific robot)[%END%] -[% CASE 'robot' %]<strong> [%|loc%]robot[%END%] </strong> -[%|loc(robot)%](this template is the default for all lists of robot %1 unless it is redefined for a specific list)[%END%] -[% CASE 'list' %]<strong> [%|loc%]list[%END -%] </strong> -[%|loc(list,robot)%](this template is defined for list %1@%2)[%END%] -[% CASE %]<strong> [% scope %] </strong> -[% END %] -<br /> - <label>[%|loc%]Language: [%END%]</label> -[%- IF tpl_lang == 'default' -%] -<strong> [%|loc%]default[%END%] </strong> -[%|loc%](This template is the default for all languages unless it is redefined for a specific language)[%END%] -[%- ELSE -%] -<strong class="LanguageNeutral" -lang="[%tpl_lang_tag%]" xml:lang="[%tpl_lang_tag%]" -> [%tpl_lang_title%] </strong> -[%- END %] <br /> - -</fieldset> -<fieldset> - <legend><strong> [%|loc%]Output template[%END%]</strong> </legend> - <label for="template_name_out">[%|loc%]New template name: [%END%] </label><input id="template_name_out" type="text" name="template_name_out" value="[% template_name %]" /><br /> - <label for="scope_out">[%|loc%]Scope: [%END%] </label> - <select id="scope_out" name="scope_out"> - <option value="site" [% IF scope == 'site' %]selected[% END %]>[%|loc%]site[%END%]</option> - [% UNLESS default_robot %]<option value="robot" [% IF scope == 'robot' %]selected[% END %]>[%|loc%]robot[%END%]</option>[%END%] - <option value="list" [% IF scope == 'list' %]selected[% END %]>[%|loc%]list[%END%]</option> - </select><br /> - <label for="tpl_lang_out">[%|loc%]Language: [%END%] </label> - <select id="tpl_lang_out" name="tpl_lang_out" class="LanguageNeutral"> - <option value="default">[%|loc%]default[%END%]</option> - [% FOREACH lg = languages %] - <option lang="[%lg.value.lang_tag%]" xml:lang="[%lg.value.lang_tag%]" - value="[%lg.key%]" [% IF tpl_lang == lg.key %]selected[% END %]>[%lg.value.complete%]</option> - [%END%] - </select><br /> - <label for="list_out">[%|loc%]Enter list name: [%END%] </label><input id="list_out" type="text" name="list_out" size="20" value="[% list %]" /><br /> - - <input type="hidden" name="template_name" value="[% template_name %]" /> - <input type="hidden" name="template_path" value="[% template_path %]" /> - <input type="hidden" name="scope" value="[% scope %]" /> - <input type="hidden" name="tpl_lang" value="[% tpl_lang %]" /> - <input type="hidden" name="webormail" value="[% webormail %]" /> - [% IF scope == 'list' %] - <input type="hidden" name="list" value="[% list %]" /> - [% END %] -</fieldset> -<br/> -<input class="MainMenuLinks" type="submit" name="action_copy_template" value="[%|loc%]Apply[%END%]"> -</form> - -</p><br /> -<div class="block"> -<pre> -[% template_content %] -</pre> -</div> -<!-- end copy_template.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/create_list.tt2 b/sympa-6.1.20-src/web_tt2/create_list.tt2 deleted file mode 100644 index 8f9397e5c4de9b6cd9fb8de6d448643e9954a81a..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/create_list.tt2 +++ /dev/null @@ -1,19 +0,0 @@ -<!-- $Id: create_list.tt2 5675 2009-04-28 13:59:12Z david.verdin $ --> - -<div class="block"> - -[% IF status == 'open' %] -[%|loc%]Your list is created.[%END%]<br /> -[%|loc%]You can configure it via the admin button beside.[%END%] -<br /> -[% IF auto_aliases %] -[%|loc%]Aliases have been installed.[%END%] -[% END %] - -[% ELSE %] -[%|loc%]Your list creation request is registered. You can now modify its -configuration using the admin button but the list will be unusable until the listmaster validates it.[%END%] -[% END %] -<!-- end create_list.tt2 --> - -</div> \ No newline at end of file diff --git a/sympa-6.1.20-src/web_tt2/create_list_request.tt2 b/sympa-6.1.20-src/web_tt2/create_list_request.tt2 deleted file mode 100644 index f36b9d33aeccaf1f161d2de3c589a8954ca8753c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/create_list_request.tt2 +++ /dev/null @@ -1,122 +0,0 @@ -<!-- $Id: create_list_request.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - -<div class="block"> - -[% IF get_which_owner.size > 0 %] - <h2>[%|loc%]Copy an existing list.[%END%]</h2> -<br /> - - [%|loc%]You can create a list, using an existing list as a template; the list configuration of the source list will be copied to create the new one. Note that neither list members, nor archives or shared documents are duplicated. The source lists you can use are limited to lists you own.[%END%] - [%|loc%]After the list is created, you will be able to adjust it's configuration.[%END%] <br /> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <select name="list"> - [% FOREACH l = get_which_owner %] - <option value="[% l.name %]">[% l.name %]</option> - [% END %] - </select> - <label for="new_listname">[%|loc%]New list name:[%END%]</label> <input id="new_listname" name="new_listname" value="" /> - <input type="hidden" name="new_robot" value=[%robot%] /> - <input class="MainMenuLinks" type="submit" name="action_copy_list" value="[%|loc%]copy list configuration[%END%]" /> - </fieldset> - </form> -[% END %] - - -<h2>[%|loc%]Create a list using a template[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#create_list" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> -<br /> -[%|loc%]You can request a new list creation with the following form.You will have to choose a list template that will preset most of the list parameters according to the list usage you plan. [%END%] -[%|loc%]After the list is created, you will be able to adjust it's configuration.[%END%] <br /> -<form action="[% path_cgi %]" method="post"> -<fieldset> - - <img src="[% icons_url %]/unknown.png" alt="[%|loc%]Help[%END%]" title="[%|loc%]the list name; be careful, not its address![%END%]" /> - <label for="listname"><strong>[%|loc%]List name:[%END%]</strong></label> - <input type="text" id="listname" name="listname" size="30" value="[% saved.listname %]" /> - <br /> - - <img src="[% icons_url %]/unknown.png" alt="[%|loc%]Help[%END%]" title="[%|loc%]You are the privileged owner of this list[%END%]" /> - <strong>[%|loc%]Owner:[%END%]</strong> - <em>[% user.email %]</em><br /> - - <img src="[% icons_url %]/unknown.png" alt="[%|loc%]Help[%END%]" title="[%|loc%]The list type is a set of parameters' profile. Parameters will be editable, once the list created[%END%]" /> - <label for="list_type" ><strong>[%|loc%]List type:[%END%]</strong></label> - <ul id="list_type"> - [% FOREACH template = list_list_tpl %] - [% IF template.value.comment %] - <li> - <input id="template.[% template.key %]" type="radio" name="template" value="[% template.key %]" - [% IF template.value.selected || loop.size == 1 %] - checked="checked" - [% END %] - /> - [% PROCESS $template.value.comment %] - </li> - [% ELSE %] - <li> - <input id="template.[% template.key %]" type="radio" name="template" value="[% template.key %]" - [% IF template.value.selected %] - checked="checked" - [% END %] - /> <label for="template.[% template.key %]">[% template.key %]</label> - </li> - [% END %] - [% END %] - </ul> - <br /> - - <img src="[% icons_url %]/unknown.png" alt="[%|loc%]Help[%END%]" title="[%|loc%]The list's subject[%END%]" /> - <label for="subject"><strong>[%|loc%]Subject:[%END%]</strong></label> - <input type="text" name="subject" id="subject" size="60" value="[% saved.subject %]" /> - <br /> - -[% SET single_topic = "other" %] -[% FOREACH topic = list_of_topics %] - [% IF loop.size > 1 || (topic.key && topic.key != "other") %] - [% SET single_topic = "" %] - [% LAST %] - [% ELSIF topic.value.sub %] - [% FOREACH subtopic = topic.value.sub %] - [% SET single_topic = "" %] - [% LAST %] - [% END %] - [% END %] -[% END %] -[% IF single_topic != "" %] - <input id="topics" name="topics" type="hidden" value="[% single_topic %]" /> -[% ELSE %] - <img src="[% icons_url %]/unknown.png" alt="[%|loc%]Help[%END%]" title="[%|loc%]List classification in the directory[%END%]" /> - <label for="topics"><strong>[%|loc%]Topics:[%END%]</strong></label> - <select id="topics" name="topics"> - <option value="">[%|loc%]--Select a topic--[%END%]</option> - [% SET topic_other = 0 %] - [% FOREACH topic = list_of_topics %] - [% IF topic.key == "other" %][% SET topic_other = 1 %][% END %] - <option value="[% topic.key %]" - [% IF topic.value.selected %] - selected="selected" - [% END %] - >[% topic.value.current_title %]</option> - [% IF topic.value.sub %] - [% FOREACH subtopic = topic.value.sub %] - <option value="[% topic.key %]/[% subtopic.key %]">[% topic.value.current_title %] / [% subtopic.value.current_title %]</option> - [% END %] - [% END %] - [% END %] - [% UNLESS topic_other %] - <option value="other">[%|loc%]Other[%END%]</option> - [% END %] - </select> - <br /> -[% END %] - - <img class="align_top" src="[% icons_url %]/unknown.png" alt="[%|loc%]Help[%END%]" title="[%|loc%]A few lines describing the list[%END%]" /> - <label for="info" class="align_top"><strong>[%|loc%]Description:[%END%]</strong></label> - <textarea class="desc" id="info" name="info" rows="10" cols="80">[% saved.info %]</textarea><br /><br /> - - <input class="MainMenuLinks" type="submit" name="action_create_list" value="[%|loc%]Submit your creation request[%END%]" /> -</fieldset> -</form> - -</div> -<!-- end create_list_request.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/css.tt2 b/sympa-6.1.20-src/web_tt2/css.tt2 deleted file mode 100644 index 4dc947937bf0987b8d963187c63ec20c40e543d0..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/css.tt2 +++ /dev/null @@ -1,2405 +0,0 @@ -[% IF css == 'style.css' || custom_css || session.custom_css -%] -[% IF custom_css || session.custom_css -%] -[% FOREACH color IN ['color_0' 'color_1' 'color_2' 'color_3''color_4' 'color_5' 'color_6' 'color_7' 'color_8''color_9' 'color_10' 'color_11' 'color_12' 'color_13' 'color_14' 'color_15'] -%] -[% IF session.$color %][% SET $color = session.$color %][% END -%] -/* [% color %]: [% $color %] */ -[% END -%] -[% END -%] - -@media screen { } -* { - border: 0px solid [% color_1 %]; - color: [% color_2 %]; - font-family:"Trebuchet MS", Myriad, "Gill Sans", "Century Gothic", "Bitstream Vera Sans", verdana, lucida, arial, helvetica, sans-serif; - padding: 0; - margin: 0; - } - -[%# -This is a definition of font families to cover languages as much as possible -rather than quality. --%] -.LanguageNeutral, -.LanguageNeutral option { - font-family: arial, sans-serif; - } - -html, -body { - height:100%; - padding: 0; - margin: 0; - } - -body { - font-size: 62.5%; - background: [% color_9 %]; - } - -ul { - margin: 0 0 0 4em; - } -ol { - margin: 0 0 0 4em; - } -dl { - margin: 0 0 0 1em; - } - -/* ########## Blocks, id and class ########## */ - -/*Top anchor*/ -#TopAnchor { - position: absolute; - top: 0; - } - -/*Global container*/ -#Canvas { - min-height: 95%; - position:relative; - width: 98%; - margin: 0 0.8em -5em 0.8em; - /* if IE <= 7 zoom:1; */ - zoom: 1; - } - -/* Menus Block*/ -#Menus { - float:left; - width: 23.5em; - border: 0px solid [% color_1 %]; - margin-top:1em; - padding-top: 0px; - text-align: left; - } - -/*Content Block*/ -#Stretcher { - margin-left:25em; - margin-right: 0; - margin-top:1em; - text-align: left; - } - -#Paint { - vertical-align:top; - text-align: center; - } - -#Header { - position:relative; - background: none; - border: none; - } - -#ActionHeader { - background: [% color_9 %]; - border: 1px solid [% color_4 %]!important; - font-size: 1em; - text-align: left; - vertical-align: top; - /* padding-bottom: 0px; */ - padding-top: 5px; - padding-left: 5px; - padding-right: 5px; - padding-bottom: 5px; - margin-bottom: 2em; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -#ActionHeader #MainMenuLinks { - border: none; - } - -#ActionHeader span.search_form { - margin-bottom:1em; - } - -#Clock { - float: right; - padding-right: 3px; - vertical-align:top; - } - -#Login { - text-align: left; - padding-left: 5px; - vertical-align:top; - } -#Search input.textbox { - width: 90%; - } -#logo { - position:absolute; - top:0.5em; - left:4em; - z-index:510; - } - -#logo img { - float: left; - } - -/*Robot title*/ - -#Title { - position:relative; - text-align: center; - font-size:1.8em; - font-weight: bold; - padding:1em 0; - margin-top:0em; - margin-left:5em; - z-index:520; - } - -#error { - font-size: 1em; - } -select { - background-color: [% color_13 %]; - } - -select[multiple] { - vertical-align: top; - } - -.menuInactive2 { - font-size: 1em; - line-height:1.4em; - text-decoration: none; - font-weight:normal; - } -#FormLabel { - font-size: 1.2em; - font-weight: bold; - } -#ArcCalendar { - padding: 1em 0; - } - -ul#MainMenuLinks { - border-bottom:1px solid [% color_8 %]; - float:right; width:100%; - margin-top:1em; - margin-left: 0; - } - -ul#MainMenuLinks li { - list-style: none; - display: inline; - } - -ul#MainMenuLinks li a.MainMenuLinks { - background: [% color_8 %]; - color:[% color_9 %]; - } - -ul#MainMenuLinks li a.MainMenuLinks:hover{ - background: [% color_6 %]; - color:[% color_8 %]; - } - -#toggleMenu { - float: right; - padding-right: 3px; - } - -td.adminmenu { - background: [% color_9 %]; - text-align: center; - } - -.text_left { - text-align: left; - } - -.text_right { - text-align: right!important; - } - -td.text_right { - text-align: right; - } - -.text_center { - text-align: center; - } - -.text_justify { - text-align: justify; - } - -.without_padding { - padding:0!important; - } - -/* list_panel and list_admin_menu .tt2 block*/ - -.list_panel, -#list_admin_menu { - font-weight: bold; - border: 1px solid [% color_12 %]; - padding:0.5em; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -.list_panel { - font-size: 1.2em; - margin-bottom:0.5em - } -#list_admin_menu { - font-size: 1.4em; - } - -.list_panel ul, -#list_admin_menu ul { - list-style-type: none; - margin:0 0.5em - } - -.list_panel ul li, -#list_admin_menu ul li { - font-size:1em; - line-height:1.4em; - margin-top:0.3em; - } - -.list_panel span { - font-weight: normal!important; - } - -.list_panel ul li a:hover, -#list_admin_menu ul li a:hover { - color:[% color_4 %]; - text-decoration:none; - } - -.list_panel ul li ul, -#list_admin_menu ul li ul { - font-size:0.9em; - } - -.list_panel ul li ul li, -#list_admin_menu ul li ul li{ - font-size:0.9em; - line-height:1.2em; - margin-top:0em; - } - -/* list type on the list creation page */ -#list_type { - margin-left: 5em; - list-style-type: none; - } - -#list_type dd { - margin-left: 1em; - } - -img { - border: 0px; - } - -/* Font */ -.smaller { - font-size: smaller; - } - -.larger { - font-size: larger; - } - -span.center { - text-align: center; - } - -/* review.tt2 cels */ -td.review_cels { - text-align: center; - padding:0 0.2em; - } - -td.review_cels_mail { - text-align: left; - padding:0 0 0 0.2em; - } - -.search_form, .edit_list_request_help { - float: right; - } -.search_form { - text-align: center; - } -#home_rss_news { - float: right; - } - -#home_rss_news input { - background: [% color_4 %]; - border: 1px solid [% color_4 %]; - color: [% color_5 %]; - padding:0.05em 1em; - margin:0; - text-decoration: none; - font-size: 0.9em; - font-weight: 600; - letter-spacing:0.1em; - /* if IE zoom:1;*/ - zoom: 1; - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -#home_rss_news input:hover { - background: [% color_5 %]; - color: [% color_4 %]; - } - -#home_search_list { - clear: both; - } - -#home_search_list form fieldset { - display: inline; - vertical-align: top; - } - -#home_container { - padding: 10px; - margin: 0; - border: 1px dashed [% color_2 %]; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -/* Not yet implemented -.news_container { - background-color: [% color_3 %]; - border: 1px solid [% color_2 %]; - -moz-border-radius: 4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - padding: 5px; - } -*/ - -.edit_list_request_enum { - margin: 1em; - padding-left: 1em; - text-align: left; - font-size: 1em; - } - -/* menu button which allowed to manage your list*/ -.list_admin { - font-size: 1em; - } - -/*colors*/ -.color0 { - background-color: [% color_0 %]; - } -[%# for compatibility: use .color_light. #%] -.color4 { - background-color: [% color_9 %]; - } -[%# for comatibility: use .bg_color_error. #%] -.color7 { - background-color: [% color_7 %]; - } - -.color_light { - background-color: [% color_9 %]; - } - -.color_dark { - color: [% color_9 %]; - } - -.bg_color_dark { - background-color: [% color_9 %]; - } - -.color_bg { - color: [% color_13 %]; - } - -.bg_color_bg { - background-color: [% color_13 %]; - } - -.bg_color_error { - background-color: [% color_7 %]; - } - -.list_menu_links { - font-weight: bold; - font-size: 1.2em; - } - -a.list_menu_links:hover { - color:[% color_4 %]; - text-decoration:none; - } - -.mailing_lists_menu { - padding: 10px; - margin: 5px 25px 5px 25px; - float: left; - font-size: 1.1em; - text-align: left; - } - -ul.no_style { - list-style: none; - } - -.align_top { - vertical-align: top; - } -/* explanation block of the template "ls_template.tt2" */ -#template_editor { - margin-top: 10px; - } - -#template_editor ul { - padding-left: 5px; - } -#template_editor li { - margin: 2px; - } - -/*block of the color table*/ -#color_table { - border: 1px dotted; - padding-top: 3px; - padding-left: 3px; - padding-bottom: 4px; - } - -#color_table th { - border: solid 1px; - text-align: center; - padding: 1px; - } - -#color_table td { - border: 1px solid [% color_12 %]; - padding-left: 10px; - } - -#color_table .separator { - border: none; - padding: 0px; - background-color: [% color_5 %]; - } - -#color_table tr#color_table_title th { - background-color: [% color_9 %]; - } - -/* ul of the "help.tt2" template */ -#help { - padding-left: 10px; - padding-top: 5px; - margin-bottom: 20px; - } - -#help li { - padding: 1px; - } - -/** menu "ul" "li" style **/ -#help_editfile, #blaklist { - margin: 1em; - } - -#help_editfile ul, #blacklist ul { - padding-left: 1em; - margin-top: 0.5em; - margin-bottom: 0.5em; - } - -/*bounce level color*/ -.bounce_level2 { - background-color: #F00; - } - -.bounce_level1 { - background-color: #FF8C00; - } - -/* set_pending_list_request.tt2 template*/ -ul#set_pending_radio { - display: inline; - list-style-type: none; - } - -ul#set_pending_radio li { - display: inline; - margin-right: 1em; - margin-left: 1em; - } - -form { - line-height: 1.8em; - } - -form input, -form textarea, -form select { - margin: 4px 0px; - padding: 1px; - font-size: 1em; - } - -form#logs_form label, -form.bold_label label { - font-weight: bold; - } - -form#bold_label input { - margin-left: 5px; - margin-top: 5px; - } - -form input[type="radio"], -form input[type="checkbox"] { - vertical-align: middle; - border:none; - } - -#global_mailing_lists { - text-align: center; - } - -#show_cert { - border: 1px solid; - } - -#show_cert ul { - list-style-type: none; - padding-top: 5px; - margin-bottom: 5px; - } - -#show_cert ul li { - line-height: 1em; - padding-left: 3px; - } - -#cp_template { - border: 1px solid; - padding: 3px; - background-color: [% color_0 %]; - width: 410px; - } - -#cp_template fieldset { - display: inline; - border: 1px solid; - vertical-align: top; - margin-left: 3px; - } - -#cp_template legend, -#cp_template label { - padding-left: 3px; - } - -/* pre */ -pre.code { - font-family: monospace; - } - -#Footer { - width:98%; - height:1.5em; - line-height: 1.5em; - position:relative; - margin: 0 0.8em; - background: [% color_12 %]; - font-size: 1.1em; - text-align: center; - padding-top:0.5em; - padding-bottom:0.5em; - -moz-border-radius:10px 10px 0 0; - -webkit-border-top-left-radius: 10px; - -webkit-border-top-right-radius: 10px; - -webkit-border-bottom-left-radius:0px; - -webkit-border-bottom-right-radius:0px; - -KHTML-border-radius:10px 10px 0 0; - -icab-border-radius:10px 10px 0 0; - border-radius:10px 10px 0 0; - } - -#Footer a { - color:[% color_5 %]; - font-family: serif!important; - font-weight:bold; - font-variant: small-caps!important; - } - -#Footer img { - margin:0 0.5em 0 0; - height:20px; - width:20px; - vertical-align:middle; - } - -.clearfooter { - height: 3em; - clear: both; - } - - -#Identity { - text-align: left; - font-size: 1.2em; - font-weight: bold; - overflow: hidden; - } - -.Help { - display: none; - position: absolute; - border: 1px dotted [% color_2 %]; - z-index: 1000; - background: [% color_13 %]; - } - -#rows_nb { - font-size: 0.8em; - } - -#page_size { - float: right; - margin-bottom: 20px; - padding-bottom: 20px; - } - -#setlang { - background: [% color_5 %]; - padding: 5px; - text-align: center; - font-weight: bold; - margin-bottom:2em!important; - border:1px solid [% color_8 %]; - border-width: 0 1px 1px 0; - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -#setlang form { - letter-spacing:0.1em; - padding: 0.5em 0; - border:1px solid [% color_12 %]; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -.MenuBlock { - background: [% color_5 %]; - padding:5px; - text-align: left; - margin-bottom: 1em; - border:1px solid [% color_8 %]; - border-width: 0 1px 1px 0; - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -.MenuBlock p strong { - font-size: 1.4em; - } - -.MenuBlock h1 { - background: [% color_8 %]; - color:[% color_5 %]; - text-align: center; - font-size: 1.2em; - letter-spacing:0.1em; - padding:0.1em 0; - margin:0 0 1em 0; - -moz-border-radius:10px 10px 0 0; - -webkit-border-top-left-radius: 10px; - -webkit-border-top-right-radius: 10px; - -webkit-border-bottom-left-radius:0px; - -webkit-border-bottom-right-radius:0px; - -KHTML-border-radius:10px 10px 0 0; - -icab-border-radius:10px 10px 0 0; - } - -.MenuBlock strong { - text-indent: 0px; - font-size: 1.2em; - padding-bottom:10px; - } - -.ContentBlock { - position: relative; - font-size: 1.1em; - margin: 0; - background: [% color_5 %]; - padding: 10px; - text-align: left; - height: 100%; - border:1px solid [% color_8 %]; - border-width: 0 1px 1px 0; - border-top:1px solid [% color_5 %]; - z-index:310; - - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -.ContentBlock p { - padding: 10px; - font-size: 1.1em; - } - -.ContentBlock > * { - padding: 0px; - border-bottom: 0px dotted [% color_1 %]; - text-align: left; - } - -.ContentBlock * a { - border-bottom: 1px dotted [% color_8 %]; - text-align: left; - } - -.ContentBlock * a:hover { - text-decoration:none; - } - -.ContentBlock * a img { - border: 0px; - } - -a img.Pictures { - height:30px; - } - -a:hover img.Pictures { - height: 80px; - } -.sub_pictures { - margin: 2em; - } - -/* pictures block on the suboptions form*/ -#pictures_block { - text-align: center; - height: 120px ; - } - -#pictures_block div { - margin: 1em; - float: left; - } - -#large_picture { - height: 80px; - } - -#pictures_block #large img{ - height: 80px; - } - -#pictures_block #small img{ - height: 30px; - margin-top: 50px; - } - -.navBar { - position:relative; - text-align: center; - margin: 1em 0 0 0; - font-size: 1.2em; - /* if IE <= 6 zoom:1; */ - zoom: 1; - } - -.navBar .MainMenuLinks { - padding:2px 5px 1px 5px!important; - position: relative; top: -1px; - -moz-border-radius:10px 10px 0 0; - -webkit-border-top-left-radius: 10px; - -webkit-border-top-right-radius: 10px; - -webkit-border-bottom-left-radius:0px; - -webkit-border-bottom-right-radius:0px; - -KHTML-border-radius:10px 10px 0 0; - -icab-border-radius:10px 10px 0 0; - border-radius:10px 10px 0 0; - } - -.displayNone { - display: none; - height:0px; - width:0px; - } - -.printNone {} - -.title { - position: absolute; - top: 60px; - font-size: 1.6em; - text-indent: 30px; - } - -.customMenu { - text-indent: 0px; - } - -a.dingbat { - text-align: center; - } - -.dingbat { - text-indent: 0px; - text-align: center; - font-weight: 100; - } - -.button { - background:[% color_9 %] !important; - border: 3px solid; - padding: 0px 2px 0px 2px; - margin:2px; - border-top-color: [% color_6 %]; - border-right-color: [% color_1 %]; - border-bottom-color: [% color_1 %]; - border-left-color: [% color_6 %]; - } - -.button:hover { - background: [% color_9 %]; - border-top-color: [% color_1 %]; - border-right-color: [% color_6 %]; - border-bottom-color: [% color_6 %]; - border-left-color: [% color_1 %]; - } - -.smalltext { - font-size: 0.8em; - } - -.smalltext a { - font-size: 0.8em; - } - -.smallblacktext { - color: [% color_12 %]; - font-size: 1.2em; - } - -.mediumtext { - font-size: 1.2em; - } - -.largetext { - font-size: 1.6em; - } - -/* ########## Elements ########## */ - -.MainMenuLinks { - border: 1px solid [% color_8 %]; - background: [% color_9 %]; - color:[% color_8 %] ; - text-decoration: none; - padding: 0 5px!important; - margin: 0; - vertical-align: baseline; - cursor:pointer; - -moz-border-radius:10px; - -KHTML-border-radius:10px; - -webkit-border-radius:8px; - -icab-border-radius:10px; - border-radius:10px; - } - -a.MainMenuLinks { - border: 1px solid [% color_8 %]; - background: [% color_8 %]; - color:[% color_9 %]; - text-decoration: none; - padding: 0px 5px 0px 5px; - /* if IE <= 7 zoom:1; */ - zoom: 1; - } - -a.MainMenuLinks:hover { - border: 1px solid [% color_6 %]; - border-bottom:[% color_8 %]; - background: [% color_6 %]!important; - color: [% color_8 %]!important; - text-decoration: none; - padding: 0px 5px 0px 5px; - } - -a.MainMenuLinksCurrentPage { - border: 1px solid [% color_8 %]; - background: [% color_9 %]; - border-bottom: 1px solid [% color_9 %]; - color: [% color_8 %]; - text-decoration: none; - padding: 3px 5px 1px 5px; - position: relative; top: -1px; - -moz-border-radius:10px 10px 0 0; - -webkit-border-top-left-radius: 10px; - -webkit-border-top-right-radius: 10px; - -webkit-border-bottom-left-radius:0px; - -webkit-border-bottom-right-radius:0px; - -KHTML-border-radius:10px 10px 0 0; - -icab-border-radius:10px 10px 0 0; - border-radius:10px 10px 0 0; - /* if IE <= 7 zoom:1; */ - zoom: 1; - } - -a.MainMenuLinksCurrentPage:hover { - border: 1px solid [% color_8 %]; - background: [% color_9 %]; - border-bottom: 1px solid [% color_9 %]; - color: [% color_8 %]; - text-decoration: none; - } - -input.MainMenuLinks { - margin-top: 4px; - } - -input.MainMenuLinks:hover{ - background: [% color_8 %]!important; - color: [% color_9 %]!important; - border: 1px solid [% color_8 %]; - } - -a.actionMenuLinks { - border: 1px solid [% color_8 %]; - background: [% color_9 %]; - color:[% color_8 %] ; - text-decoration: none; - padding: 1px 5px !important; - margin: 0 0.5em 0 0; - cursor:pointer; - -moz-border-radius:10px; - -KHTML-border-radius:10px; - -webkit-border-radius:8px; - -icab-border-radius:10px; - border-radius:10px; - white-space: nowrap; - } - -a.actionMenuLinks:hover { - background: [% color_8 %]; - color: [% color_9 %]; - text-decoration: none; - } - -a.actionMenuLinksCurrentPage { - border: 1px solid [% color_2 %]; - background: [% color_6 %]; - color: [% color_8 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - white-space: nowrap; - } - -a.actionMenuLinksCurrentPage:hover{ - border: 1px solid [% color_2 %]; - background: [% color_6 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - } - -a.actionMenuLinksInactive { - border-bottom: 1px solid [% color_2 %]; - border-right: 1px solid [% color_10 %]; - border-top: 1px solid [% color_10 %]; - border-left: 1px solid [% color_10 %]; - color: [% color_10 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - white-space: nowrap; - } - -a.actionMenuLinksInactive:hover { - border-bottom: 1px solid [% color_2 %]; - border-right: 1px solid [% color_10 %]; - border-top: 1px solid [% color_10 %]; - border-left: 1px solid [% color_10 %]; - color: [% color_10 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - } - -#actionnuLinksInactive { - border: 0px solid [% color_2 %]; - text-decoration: none; - padding: 0px 0px 0px 3px; - } - -/* -a.ArcMenuLinks { - border: 1px solid [% color_2 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - } -*/ - -a.ArcMenuLinks, -a.ArcMenuLinks:visited, -a.ArcMenuLinks:link { - border-bottom: 2px solid [% color_8 %]; - border-right: 2px solid [% color_8 %]; - border-top: 1px solid [% color_8 %]; - border-left: 1px solid [% color_8 %]; - font-weight:bold; - color: [% color_8 %]; - background-color:[% color_13 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -KHTML-border-radius:5px; - -icab-border-radius:5px; - border-radius:5px; - } - -a.ArcMenuLinks:hover { - background: none; - color: [% color_8 %]; - } - -a.ArcMenuLinks:active { - border: 1px solid [% color_2 %]; - background: [% color_6 %]; - color: [% color_8 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - } - -a.ArcMenuLinksCurrentPage { - border: 1px solid [% color_2 %]; - background: [% color_6 %]; - color: [% color_8 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -KHTML-border-radius:5px; - -icab-border-radius:5px; - border-radius:5px; - } - -a.ArcMenuLinksCurrentPage:hover { - border: 1px solid [% color_2 %]; - background: [% color_6 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - } - -a.ArcMenuLinksInactive, -a.ArcMenuLinksInactive:hover { - border-bottom: 2px solid [% color_2 %]; - border-right: 2px solid [% color_2 %]; - border-top: 1px solid [% color_2 %]; - border-left: 1px solid [% color_2 %]; - color: [% color_2 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -KHTML-border-radius:5px; - -icab-border-radius:5px; - border-radius:5px; - } - -a.ArcMenuLinksSortActive, -a.ArcMenuLinksSortActive:hover, -a.ArcMenuLinksSortInactive:hover { - border: 1px solid [% color_4 %]; - background: [% color_5 %]; - color: [% color_4 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -KHTML-border-radius:5px; - -icab-border-radius:5px; - border-radius:5px; - } - -a.ArcMenuLinksSortInactive { - border: 1px solid [% color_4 %]; - background: [% color_4 %]; - color: [% color_5 %]; - text-decoration: none; - padding: 0px 10px 0px 10px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -KHTML-border-radius:5px; - -icab-border-radius:5px; - border-radius:5px; - } - -#ArcMenuLinksInactive { - border: 0px solid [% color_2 %]; - text-decoration: none; - padding: 0px 0px 0px 3px; - } - -/* Not yet implemented. -.ArcActions { - float:right; - margin-top: -2.9em; - margin-right:0.5em - } - -.ArcActions form { - border: none!important; - } -*/ - -.block { - border: 1px dotted [% color_2 %]; - padding: 7px; - margin-top:0; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -.block form, .block .form { - border:1px solid [% color_11 %]; - margin:0.5em 0; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -.block form fieldset { - padding:0.5em; - } - -.block .form { - padding: 0.5em; - } - -form.inline { - display: inline; - border-width: 0 !important; - margin: 0; - padding: 0; - } - -form.inline .MainMenuLinks { - margin-top: 1px; - } - -.block blockquote { - margin: 16px 40px; - } - -h1.block, -h2.block, -h3.block, -h4.block, -h5.block, -h6.block { - text-align: center; - background: [% color_9 %]; - } - -.block span.default { - color: [% color_1 %]; - padding-left: 2em; - font-weight: bold; - } - -h7 { - font-size: 0.8em; - font-style: italic; - } - -h7 strong { - font-size: 1em; - } - -.listTitle { - position:relative; - height: 1%; - width: 99.5%; - text-align: center; - border: solid [% color_4 %]; - border-width: 0 1px 1px 0; - padding: 2px 0px; - background: [% color_13 %]; - font-size:1.3em; - margin:0 auto; - -moz-border-radius:10px; - -KHTML-border-radius:10px; - -webkit-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -.listTitle a, -.listTitle a:hover { - font-weight:bold; - letter-spacing: 0.1em; - text-decoration:none; - background:none!important; - border:none!important; - } - -.listTitle a { - color: [% color_2 %]; - } -.listTitle a:hover { - color: [% color_8 %]; - } - -.listTitle.description { - font-size:1em; - font-weight:bold; - margin-top:0em; - margin-bottom:1.3em; - background:none!important; - border:none; - } - -.listTitle.description span { - color:[% color_4 %]; - } - -#ErrorBlock { - margin:0; - padding:0; - position:absolute; - left:0; - top:0; - z-index:600; - background: [% color_4 %]; - opacity:0.4; - width:100%; - height:100%; - } - -#ErrorMsg { - position:absolute; - width:60%; - margin:20% 19%; - z-index:610!important; - border: 5px ridge [% color_12 %]; - font-family:serif; - font-size: 1.6em; - font-weight: bold; - text-align:center; - color:[% color_5 %]!important; - background-color: [% color_12 %]; - padding:1em 0.5em; - -moz-border-radius:20px; - -webkit-border-radius:20px; - -KHTML-border-radius:20px; - -icab-border-radius:20px; - border-radius:20px; - } - -/* Not yet implemented. -.formError { - float:right; - background: [% color_7 %]; - z-index:610!important; - border: 2px ridge [% color_12 %]; - padding:1em 0.5em; - -moz-border-radius:20px; - -webkit-border-radius:20px; - -KHTML-border-radius:20px; - -icab-border-radius:20px; - border-radius:20px; - display:none; - } - */ - -#ErrorMsg a { - color: [% color_4 %]!important; - } - -#ErrorMsg a:hover { - color: [% color_5 %]!important; - } - -#ErrorMsg .MainMenuLinks { - color:[% color_4 %]; - background-color:[% color_5 %]; - border:2px outset [% color_4 %]; - padding: 0 1.8em!important; - margin-top:1em; - font-size: 0.7em; - font-weight:bold; - -moz-border-radius:20px; - -webkit-border-radius:20px; - -KHTML-border-radius:20px; - -icab-border-radius:20px; - border-radius:20px; - } - -#ErrorMsg .MainMenuLinks:hover { - background-color:[% color_4 %]!important; - border:2px inset [% color_5 %]; - color:[% color_5 %]!important; - } - -#noticeMsg { - position: absolute; - top:20%;left:25%;right:25%; - z-index: 700!important; - border: 2px ridge [% color_12 %]; - font-family:serif; - font-size: 1.6em; - font-weight: bold; - text-align:center; - color:[% color_4 %]!important; - background-color: [% color_13 %]; - padding:1em 0.5em; - -moz-border-radius:20px; - -webkit-border-radius:20px; - -KHTML-border-radius:20px; - -icab-border-radius:20px; - border-radius:20px; - } - -#noticeMsg .MainMenuLinks { - color:[% color_12 %]; - background-color:[% color_5 %]; - border:2px outset [% color_12 %]; - padding: 0 2em!important; - margin-top:1em; - font-size: 0.8em; - -moz-border-radius:20px; - -webkit-border-radius:20px; - -KHTML-border-radius:20px; - -icab-border-radius:20px; - border-radius:20px; - } - -#noticeMsg .MainMenuLinks:hover { - background-color:[% color_12 %]!important; - border:2px inset [% color_5 %]; - color:[% color_5 %]!important; - } - -/* Not yet implemented. -div.messageContent { - text-align: left; - color:[% color_5 %]!important; - font-size: 0.8em; - font-weight: normal; - height: 400px; - overflow-y: scroll; - } - -div.hiddenform { - position:absolute; - width:40%; - background: [% color_3 %]; - z-index:610!important; - border: 2px ridge [% color_12 %]; - padding:1em 0.5em; - -moz-border-radius:20px; - -webkit-border-radius:20px; - -KHTML-border-radius:20px; - -icab-border-radius:20px; - border-radius:20px; - display:none; - } -*/ - -p.listenum { - margin: 0 0 0.5em 1.5em; - padding:0.3em 0 0 0.5em!important; - font-size:0.9em; - } - -ul.listenum { - list-style: none; margin: 0 0 0 1em - } - -ul.listenum li { - padding: 4px; - } - -ul.listenum li a.actionMenuLinks { - background: [% color_8 %]; - color: [% color_9 %]; - font-size:1.1em; - padding:0em 0.4em!important; - } - -ul.listenum li a.actionMenuLinks:hover { - background: [% color_9 %]; - color:[% color_8 %]; - border: 1px solid [% color_9 %]; - padding:0em 0.4em!important; - } -div.admin_cmd { - float:left; - margin: 0em 0.3em 0.1em 0; - padding: 0 0.3em; - background: [% color_4 %]; - border: 1px solid [% color_4 %]; - -moz-border-radius:6px; - -webkit-border-radius:6px; - -KHTML-border-radius:6px; - -icab-border-radius:6px; - border-radius:6px; - } - -div.admin_cmd a { - color: [% color_5 %]; - font-size:0.7em!important; - font-weight:bold; - border: none; - } - -div.admin_cmd a:hover { - color: [% color_4 %]; - border: none; - } - -div.admin_cmd:hover { - background: [% color_5 %]; - } - -ul li.menuLinksCurrentPage a { - color:[% color_4 %]!important; - } - -ul.calendar { - margin-left:0!important; - padding-left:0!important; - } - -ul.calendar a { - font-size: 1em; - } - -ul.calendar li { - list-style: none; - display: inline; - padding: 0px 1px 0px 2px; - line-height: 2em; - font-size: 1em; - text-decoration: none; - border: 1px solid [% color_12 %]; - -moz-border-radius:4px; - -webkit-border-radius:4px; - -KHTML-border-radius:4px; - -icab-border-radius:4px; - border-radius:4px; - } - -ul li.calendarLinks { - border: 1px solid [% color_4 %]; - background: [% color_5 %]; - } - -ul li.calendarLinks a { - color: [% color_4 %]; - border: none; - } - -ul li.calendarLinks:hover { - background: [% color_4 %]; - border: 1px solid [% color_4 %]; - } - -ul li.calendarLinks a:hover { - color: [% color_5 %]!important; - } - -ul li.calendarLinksCurrentPage, -ul li.calendarLinksCurrentPage:hover { - border: 1px solid [% color_4 %]!important; - } - -ul li.calendarLinksCurrentPage, -ul li.calendarLinksCurrentPage a { - background: [% color_4 %]; - color: [% color_5 %]!important; - border-bottom:1px solid [% color_4 %]!important; - } - -ul li.calendarLinksCurrentPage:hover, -ul li.calendarLinksCurrentPage a:hover { - background: [% color_5 %]; - color: [% color_4 %]!important; - border-bottom:1px solid [% color_4 %]!important; - } - -ul li.calendarLinksInactive { - background: #eee; - border: 1px solid #888; - color: #888; - } - -ul li.calendarYear { - background: [% color_12 %]; - border: 1px solid [% color_12 %]; - color: [% color_5 %]; - } - -a img { - border: 0px; - } - -a { - text-decoration: none; - } - -a:link { - text-decoration: none; - } -a:visited { - text-decoration: none; - } -a:hover { - color: [% color_8 %]; - text-decoration:underline; - background:none; - } -abbr, -acronym, -.info { - border-bottom: 1px dotted [% color_8 %]; - cursor: help; - } - -h1 a:hover { - text-indent: 30px; - font-size: 1.6em; - padding-bottom:10px; - } - -p a:hover { - text-indent: 30px; - } - -p a:first-letter { - font-size: 1.6em; - font-weight: bold; - } - -p { - text-indent: 0px; - } - -p.spacer { - clear: both; - } - -code { - font-weight: bold; - } - -.retraitita { - background-color: [% color_13 %]; - border: 1px dashed [% color_1 %]; - padding: 2px 2px 2px 2px; - margin: 5px 5px 5px 5px; - } - -span.retraitita { - background-color: [% color_13 %]; - border: 1px dashed [% color_1 %]; - padding: 5px 10px 5px 10px; - margin: 5px 5px 5px 5px; - display: block; - } - -h1 { - text-indent: 0px; - margin-top: 10px; - font-size: 1.8em; - } - -h2 { - color: [% color_4 %]; - text-indent: 0px; - margin-top: 10px; - font-size: 1.4em; - } - -h3 { - color: [% color_12 %]; - text-indent: 10px; - margin-top: 10px; - font-size: 1.2em; - } - -h4 { - color: [% color_8 %]; - text-indent: 20px; - margin-top: 10px; - font-size: 1.2em; - } - -h5 { - color: [% color_8 %]; - text-indent: 30px; - margin-top: 15px; - margin-bottom: 2px; - font-size: 1em; - } - -h6 { - color: [% color_8 %]; - text-indent: 40px; - margin-top: 10px; - font-size: 1em; - } - -/* input */ -a.input { - background: [% color_12 %]; - border: 1px solid [% color_12 %]; - color: [% color_13 %]; - padding: 0.2em 0.3em; - margin-left:0.2em; - text-decoration: none; - vertical-align: middle; - font-size: 0.9em; - font-weight:bold; - font-variant:small-caps; - /* if IE zoom:1;*/ - zoom: 1; - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -a.input:hover { - background: [% color_13 %]; - color: [% color_12 %]; - } - -h2 a.input { - font-size: 0.7em; - } - -input { - background: [% color_13 %]; - border: 1px solid [% color_2 %]; - padding: 0px; - } - -input[type="radio"], -input[type="checkbox"] { - margin-bottom: 0; - } - -textarea { - background: [% color_13 %]; - border: 1px solid [% color_2 %]; - padding: 3px; - } - -textarea:hover { - background: [% color_13 %]; - } - -textarea.desc { - width: 75%; - max-width: 500px; - } - -textarea.textbox { - background: [% color_6 %]; - border: 1px solid [% color_2 %]; - padding: 3px; - } - -textarea.textbox:hover { - background: [% color_6 %]; - } -input.textbox { - background: [% color_6 %]; - border: 1px solid [% color_2 %]; - padding: 3px; - } - -input.textbox:hover { - background: [% color_6 %]; - } - -input.button { - background:[% color_9 %]!important; - border: 1px solid; - padding: 0px 2px 0px 2px; - margin:2px; - border-top-color: [% color_6 %]; - border-right-color: [% color_1 %]; - border-bottom-color: [% color_1 %]; - border-left-color: [% color_6 %]; - } - -input.button:hover { - background: [% color_9 %]; - border-top-color: [% color_1 %]; - border-right-color: [% color_6 %]; - border-bottom-color: [% color_6 %]; - border-left-color: [% color_1 %]; - } - -/* Tables */ - -/* default table style */ -table.table_style, -table.listOfItems, -table.ls_template { - border: 1px solid; - border-width: 0 2px 2px 0; - background-color:[% color_14 %]; - width: auto; - margin: 10px; - font-size: 1em; - -moz-border-radius: 5px; - -webkit-border-radius:5px; - -KHTML-border-radius:5px; - -icab-border-radius:5px; - border-radius:5px; - } - -table.table_style th { - font-weight: bold; - background-color: [% color_9 %] - } - -table.listOfItems { - overflow: scroll; - } - -table.listOfItems td { - font-size: smaller; - padding: 5px; - border:1px solid [% color_12 %]; - } - -table.listOfItems tr { - border:1px solid [% color_12 %]; - } - -table.listOfItems th { - background-color: [% color_12 %]; - color:[% color_5 %]; - padding:0 2px; - border:solid 1px; - text-align: center; - white-space: nowrap; - } - -table.listOfItems th a { - color:[% color_5 %]; - } - -table.listOfItems th a:hover { - color: [% color_4 %]; - } - -table.listOfItems th.sortby { - background-color: [% color_5 %]; - color:[% color_12 %]; - } - -table.pending_lists { - border: 1px solid; - width: auto; - margin: 10px; - } - -table.pending_lists th { - padding: 3px; - border: 1px solid; - } - -table.pending_lists th.title_pending { - padding: 10px; - } - -table.ls_template th { - padding: 3px; - border: solid 1px; - background: [% color_9 %]; - text-align: center; - } - -/*pref.tt2 template - maybe to delete*/ -table.preferences { - border: none; - border-spacing: 0.5em; - font-size: 1em; - } -table.preferences th { - font-weight: normal; - white-space: nowrap; - } - -#table_container { - overflow: auto; - } - -/* test relookage */ - -#bandeau_top { - position: relative; - width:98%; - min-height:2.5em; - margin: 0 0.8em; - background: [% color_12 %]; - clear:both; - -moz-border-radius: 0 0 10px 10px; - -webkit-border-top-left-radius:0; - -webkit-border-top-right-radius:0; - -webkit-border-bottom-left-radius:10px; - -webkit-border-bottom-right-radius:10px; - -KHTML-border-radius:0 0 10px 10px; - -icab-border-radius:0 0 10px 10px; - border-radius:0 0 10px 10px; - z-index:2000; - } - -#bandeau_top #Identity { - float:left; - width:30%; - text-align: left; - font-family:serif!important; - font-size: 1em; - font-weight: bold; - color:[% color_5 %]!important; - overflow: hidden; - margin-left:1em; - line-height: 1.3em; - } - -#bandeau_top #Identity_not_connect { - width:99%; - text-align: right; - font-size: 1em; - font-weight: bold; - font-family:serif!important; - color:[% color_5 %]!important; - overflow: hidden; - margin-left:1em; - clear:none; - } - -#bandeau_top #Identity_not_connect label { - color:[% color_5 %]!important; - font-family:serif!important; - line-height: 2.6em; - } - -#bandeau_top #Identity span { - font-size: 0.9em; - font-weight: normal; - color:[% color_5 %]!important; - } - -#bandeau_top .prefs { - float:left; - font-size: 1.1em!important; - font-family:serif!important; - text-align:center; - font-weight: bold; - width:33%; - /* margin-top:0.3em; */ - line-height: 2.6em; - } - -#bandeau_top a { - font-weight: bold; - font-family:serif!important; - color:[% color_5 %]!important; - } - -#bandeau_top a:hover { - background:none; - border: none; - color:[% color_4 %]!important; - text-decoration:none; - } - -#bandeau_top .login { - float:right; - text-align:right!important; - font-family:serif!important; - color:[% color_5 %]!important; - width:33%; - } - -[%# - * Two lines, 1.4em in their height, will be shifted up. - * The height of form on right side will be solved by the height of label - * defined above, which is <shift> (2.8em) minus <half-leading of remember - * line> (approx. 0.25em), approximately 2.6em. --%] -#bandeau_top .remember { - float:left; - font-size: 0.9em; - line-height: 1.4em; - font-family:serif!important; - text-align:left; - font-weight: bold; - color:[% color_5 %]!important; - width:25%; - } - -#bandeau_top #Identity_not_connect .remember { - margin-top:-2.8em; - } - -#bandeau_top .remember a { - margin-right:1em; - } - -#bandeau_top .MainMenuLinks { - font-size:0.9em; - font-weight:600; - letter-spacing:0.1em; - color:[% color_4 %]; - background-color:[% color_5 %]; - border:1px solid [% color_4 %]; - padding: 0 5px ; - margin-top:0.5em; - margin-right:0.5em; - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -#bandeau_top .MainMenuLinks:hover { - background-color:[% color_4 %]!important; - border:1px solid [% color_4 %]; - color:[% color_5 %]!important; - } - -/* A modified version of A List Apart - http://alistapart.com/articles/slidingdoors2/ */ -#nav { - position:relative; - float:left; - width:100%; - margin:-1.6em 0 0 0.5em; - clear:right; - z-index:350; - } - -#nav ul { - height:1.4em; - margin:0; - padding: 0; - list-style:none; - } - -#nav ul li { - float:left; - min-width:0.7em; - display:inline; - margin:0 0 0.2em 0.5em; - padding:0.1em 0.2em; - border:1px solid [% color_8 %]; - border-width: 0 1px 0 0; - border-bottom:1px solid [% color_5 %]; - -moz-border-radius:10px 10px 0 0; - -webkit-border-top-left-radius:9px; - -webkit-border-top-right-radius:9px; - -webkit-border-bottom-left-radius:0; - -webkit-border-bottom-right-radius:0; - -KHTML-border-radius:10px 10px 0 0; - -icab-border-radius:10px 10px 0 0; - border-radius:10px 10px 0 0; - } - -#nav li.MainMenuLinks { - font-weight:normal; - background-color:[% color_6 %]; - border-bottom:1px solid [% color_6 %]; - padding-top:0.2em!important; - } - -#nav li.MainMenuLinks a { - color:[% color_8 %]; - } - -#nav li.MainMenuLinks a:hover { - text-decoration:none!important; - color:[% color_5 %]; - } - -#nav li.MainMenuLinks:hover { - background-color: [% color_4 %]; - border:1px solid [% color_8 %]; - border-width: 0 1px 0 0; - border-bottom:1px solid [% color_4 %]; - z-index:300; - } - -#nav li.MainMenuLinksCurrentPage { - font-weight:normal; - background-color: [% color_5 %]; - } - -#nav li.MainMenuLinksCurrentPage a{ - color:[% color_8 %]; - padding:0.1em 0.4em; - border:none; - } - -#nav li.MainMenuLinksCurrentPage a:hover{ - text-decoration:none!important; - color:[% color_8 %]; - } - -#nav li.MainMenuLinksCurrentPage:hover { - border-bottom:1px solid [% color_5 %]; - border-right: 1px solid [% color_8 %]; - z-index:300; - } - -#nav li.nolink{ - background-color: [% color_5 %]; - color:[% color_12 %]; - min-width:0.9em; - padding:0.2em 0.4em 0em 0.4em; - -moz-border-radius:10px 10px 0 0; - -webkit-border-top-left-radius:9px; - -webkit-border-top-right-radius:9px; - -webkit-border-bottom-left-radius:0; - -webkit-border-bottom-right-radius:0; - -KHTML-border-radius:10px 10px 0 0; - -icab-border-radius:10px 10px 0 0; - border-radius:10px 10px 0 0; - } - -#nav > ul a {width:auto;} -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#nav a {float:none;} -/* End IE5-Mac hack */ - -/* not for IE5.x or IE6 */ - -#subnav { - background: none; - position:relative; - float:left; - width:99.9%; - margin:0 0 0 0; - z-index:400!important; - } - -#subnav ul { - font-size:0.9em; - margin:1em 0 0 2em; - padding: 0; - list-style:none; - } - -#subnav ul li { - float:left; - display:inline; - margin:0 0.5em 0.2em 0.2em; - background-color:[% color_5 %]; - -moz-border-radius:10px; - -KTML-border-radius:10px; - -webkit-border-radius:8px; - -icab-border-radius:10px; - border-radius:10px; - } - -#subnav ul li.MainMenuLinks{ - background-color:[% color_9 %]; - padding:0 1em!important; - border:1px outset [% color_8 %]; - } - -#subnav ul li.MainMenuLinks a { - text-decoration:none; - color:[% color_2 %]; - } -#subnav ul li.MainMenuLinks a:hover, -#subnav ul li.MainMenuLinks:hover { - color:[% color_5 %]; - } - -#subnav ul li.MainMenuLinks:hover{ - text-decoration:none; - background-color:[% color_4 %]!important; - border:1px outset [% color_4 %]; - } - -#subnav ul li.MainMenuLinksCurrentPage{ - background-color:[% color_5 %]; - padding:0 1em!important; - color: [% color_4 %]; - border:1px inset [% color_8 %]; - } - -#subnav ul li.MainMenuLinksCurrentPage a { - color: [% color_4 %]; - text-decoration:none; - } - -.columns { - -moz-column-width:40%; - -moz-column-count:2; - -moz-column-gap:1em; - -moz-column-rule: 1px solid black; - - -webkit-column-width:40%; - -webkit-column-count:2; - -webkit-column-gap:1em; - -webkit-column-rule: 1px solid black; - - -icab-column-width:40%; - -icab-column-count:2; - -icab-column-gap:1em; - -icab-column-rule: 1px solid black; - - column-width:40%; - column-count:2; - column-gap:1em; - column-rule: 1px solid black; - } - -/* Not yet implemented. -.columns div { - -moz-column-break-inside: avoid!important; - -webkit-column-break-inside: avoid!important; - column-break-inside: avoid!important; - } - */ - -.menu_search { - width:100%; - border: 1px solid [% color_8 %]; - border-width: 0 1px 1px 0; - background:[% color_5 %]; - padding:0.5em 0 0.5em 0; - text-align:center; - } - -.menu_search input { - padding: 0 1px; - } - -.menu_search input.MainMenuLinks { - margin-left:0; - border: 1px solid [% color_4 %]; - background: [% color_5 %]; - color:[% color_4 %]; - padding:0!important; - font-size:0.9em; - font-weight:600; - letter-spacing:0em; - -moz-border-radius:10px; - -webkit-border-radius:10px; - -KHTML-border-radius:10px; - -icab-border-radius:10px; - border-radius:10px; - } - -.menu_search input.MainMenuLinks:hover { - border: 1px solid [% color_4 %]; - background: [% color_4 %]!important; - color:[% color_5 %]!important; - } - -span.bottom_page { - font-size: 0.8em; - font-weight:bold; - } - -.top { - float:right; - margin:0.5em 1em 1.5em 1em; - } - -.noborder { - border: none!important; - } - -/********************/ -/* For the calendar */ -/********************/ -.divCal { - position: absolute; - border: 1px [% color_9 %]; - background: [% color_9 %]; - z-index: 500; - } - -.divCal a{ - text-decoration: none; - width: 100%; - } - -.divCal table { - font-size: 12px; - font-family: Tahoma, Geneva, Verdana, sans-serif; - text-align: center; - margin: 0px; - width: 140px; - } - -.divCal td { - margin: 0px; - border: 1px solid [% color_8 %]; - } -.divCal .zoneTitre { - font-size: 12px; - font-family: Tahoma, Geneva, Verdana, sans-serif; - text-align: center; - margin: 0px; - background: [% color_9 %]; - } - -.divCal .zoneNav { - font-size: 10px; - font-family: Tahoma, Geneva, Verdana, sans-serif; - text-align: center; - margin: 0px; - cursor: pointer; - } - -.divCal .zoneMois { - font-family: Tahoma, Geneva, Verdana, sans-serif; - width: 70px; - margin: 0px; - } - -.divCal .zoneAnnee { - font-size: 10px; - font-weight: bold; - text-align: right; - margin: 0px; - width: 100%; - } - -.divCal .nSemaine { - font-family: Tahoma, Geneva, Verdana, sans-serif; - width: 30px; - margin: 0px; - color: [% color_4 %]; - } - -.divCal div{ - margin: 0px; - } - -.divCal .td { - color: [% color_5 %]; - } /*par defaut*/ - -.divCal .tdx .enWeekend { - background: [% color_8 %]; - } - -.divCal .tdx .enFeriee { - background: [% color_8 %]; - } - -.divCal .tdx .enMois { - color: black; - font-weight: bold; - } - -.divCal .tdx .aujourdhui { - border: 2px solid [% color_7 %]; - } - -.divCal .tdxNow { - color: black; - font-weight: bold; - } - -.divCal .tdxNow:hover { - background: [% color_4 %]; - } - -.divCal .tdx:hover { - background: [% color_3 %]; - } - -.divCal .tdx:hover .enWeekend { - background: [% color_6 %]; - } - -.divCal .tdx:hover .enMois { - color: [% color_2 %]; - font-weight: bold; - background: [% color_6 %]; - } /*pour firefox */ - -/* Line height not to be overridden by locale-specific styles. */ -table, -#MainMenuLinks, -#nav, -#subnav, -.input, -.listTitle, -.listTitle.description, -.MainMenuLinks, -.MainMenuLinksCurrentPage, -.actionMenuLinks, -.actionMenuLinksCurrentPage, -.actionMenuLinksInactive, -.ArcMenuLinks, -.ArcMenuLinksCurrentPage, -.ArcMenuLinksInactive, -.ArcMenuLinksSortActive, -.ArcMenuLinksSortInactive { - line-height: normal; - } - -[% END %] diff --git a/sympa-6.1.20-src/web_tt2/css_ie.tt2 b/sympa-6.1.20-src/web_tt2/css_ie.tt2 deleted file mode 100644 index d23a81d4957b19c2b1565306cbb1e09c5fb24427..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/css_ie.tt2 +++ /dev/null @@ -1,104 +0,0 @@ -<!-- $Id: css_ie.tt2 5675 2009-06-10 13:59:12Z olivier.lumineau $ --> - -<!-- Specific css for IE --> - -<!--[if lte IE 8]> -<style type="text/css"> - -/* Workaround for "noscript ghost" bug */ -noscript { - display: block; - } - -</style> -<![endif]--> - -<!--[if IE 7]> -<style type="text/css"> - -#subnav { - position:absolute; - left:25em; - } - -#bandeau_top .login .MainMenuLinks { - margin-top:0.2em; - } - -</style> -<![endif]--> - - -<!--[if lte IE 7]> -<style type="text/css"> - -ul#MainMenuLinks { - margin-left:-3em; - } - -a.input { - padding: 0 0.3em; - } - -/* "vertical-align: baseline" aligns form fields on bottom of widgets */ -form input, -form textarea, -form select { - vertical-align: middle; - } -.MainMenuLinks { - margin-bottom: 0.2em; - vertical-align: middle; - } - -/* Workaround for "peek-a-boo" bug. */ -a.MainMenuLinks, -a.MainMenuLinks:hover, -a.MainMenuLinksCurrentPage, -a.MainMenuLinksCurrentPage:hover { - position: relative; - } - -</style> -<![endif]--> - - - -<!--[if lte IE 6]> -<style type="text/css"> - -#logo { - position:absolute; - top:0.5em; - left:-5em; - z-index:510; - } - -#Stretcher { - width:99.5%; - } - -#subnav { - width:100%; - background-color:[% color_5 %]; - border:1px solid [% color_8 %]; - border-width: 0 1px 0 0; - } - -#nav { - width:99%; - } - -#Footer { - margin: 0.5em 0.8em; - } - -#bandeau_top .login .MainMenuLinks { - margin-top:0; - } - - -</style> -<![endif]--> - -<!-- end css_ie.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/d_control.tt2 b/sympa-6.1.20-src/web_tt2/d_control.tt2 deleted file mode 100644 index 522dbb3cdde71efb54f89c30f7f694781a1d59bc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/d_control.tt2 +++ /dev/null @@ -1,63 +0,0 @@ -<!-- $Id: d_control.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - -<span class="search_form"><a class="actionMenuLinks" href="[% path_cgi %]/d_read/[% list %]/[% escaped_father %]">[%|loc%]Up to higher level directory[%END%]</a></span> - -<h2>[%|loc(visible_path)%]Access control for the document %1[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - -<br /> - - [%|loc(owner)%]Owner: %1[%END%] <br /> - [%|loc(doc_date)%]Last update: %1[%END%] <br /> - [%|loc(doc_title)%]Description: %1[%END%] <br /><br /> - -<div class="block"> - <form action="[% path_cgi %]" method="post"> - <fieldset> -<p> - <label for="read_access"><strong>[%|loc%]Read access[%END%]</strong></label><br /> - <select id="read_access" name="read_access"> - [% FOREACH s = scenari_read %] - <option value='[% s.key %]' [% s.value.selected %]>[% s.value.web_title %]</option> - [% END %] - </select> - -</p> -<p> - <label for="edit_access"><strong>[%|loc%]Edit access[%END%]</strong></label><br /> - <select id="edit_access" name="edit_access"> - [% FOREACH s = scenari_edit %] - <option value='[% s.key %]' [% s.value.selected %]>[% s.value.web_title %]</option> - [% END %] - </select> -</p> -<p> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="serial" value="[% serial_desc %]" /> - <input class="MainMenuLinks" type="submit" name="action_d_change_access" value="[%|loc%]change access[%END%]" /> - </fieldset> - </form> -</p> -</div> -<br /><br /> - - [% IF set_owner %] - <div class="block"> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <p> - <label for="content"><strong>[%|loc(visible_path)%]Set the owner of the directory %1[%END%]</strong></label><br /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="serial" value="[% serial_desc %]" /> - <input type="hidden" name="action" value="d_set_owner" /> - <input maxlength="50" name="content" id="content" value="[% owner %]" size="30" /> - <input class="MainMenuLinks" type="submit" name="action_d_set_owner" value="[%|loc%]Set owner[%END%]" /> - </P> - </fieldset> - </form> - </div> - - [% END %] - -<!-- end d_control.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/d_editfile.tt2 b/sympa-6.1.20-src/web_tt2/d_editfile.tt2 deleted file mode 100644 index 6a6a468bc1e3d45bb514b9a18ab929c4bdc55a6c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/d_editfile.tt2 +++ /dev/null @@ -1,71 +0,0 @@ -<!-- $Id: d_editfile.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - -<div class="block"> - - <div class="search_form"> - <a class="input" href="[% path_cgi %]/d_read/[% list %]/[% escaped_father %]"><img src="[% father_icon %]" alt="up to higher level directory"> [%|loc%]Up to higher level directory[%END%] </a> - </div> -<br/> - - - [% IF url %] - <h1>[%|loc(visible_path)%]Edition of the bookmark %1[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h1> - [% ELSE %] - <h1>[%|loc(visible_path)%]Edition of the file %1[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h1> - [% END %] - - [%|loc(doc_owner)%]Owner: %1[%END%] <br /> - [%|loc(doc_date)%]Last update: %1[%END%] <br /> - [%|loc(desc)%]Description: %1[%END%] <br /><br /> - -</div> - - <br /><br /> - [% IF !directory %] - - <form method="post" action="[% path_cgi %]" enctype="multipart/form-data"> - <fieldset> - - [% IF url %] - <label for="url"><strong> [%|loc%]Bookmark URL[%END%] </strong></label><br /> - <input id="url" name="url" value="[% url %]" /> - [% ELSE %] - <label for="uploaded_file"><strong> [%|loc(visible_path)%]Replace the file %1 with your file[%END%] </strong></label> - <input id="uploaded_file" type="file" name="uploaded_file" /> - [% END %] - - [% IF url %] - <input class="MainMenuLinks" type="submit" value="[%|loc%]Update[%END%]" name="action_d_savefile" /> - [% ELSE %] - <input class="MainMenuLinks" type="submit" value="[%|loc%]Publish[%END%]" name="action_d_overwrite" /> - [% END %] - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="serial" value="[% serial_file %]" /> - </fieldset> - </form> - - [% END %] - - -<br /> -<br /> - -[% IF !url %] -[% IF textfile %] - <form action="[% path_cgi %]" method="post"> - <fieldset> - <label for="content"><strong> [%|loc(visible_path)%]Edit the file %1[%END%]</strong></label><br /> - <textarea id="content" name="content" cols="90" rows="25"> -[% INSERT $filepath IF filepath %] - </textarea><br /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="serial" value="[% serial_file %]" /> - <input class="MainMenuLinks" type="submit" name="action_d_savefile" value="[%|loc%]Publish[%END%]" /> - </fieldset> - </form> -[% END %] -[% END %] - -<!-- end d_editfile.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/d_install_shared.tt2 b/sympa-6.1.20-src/web_tt2/d_install_shared.tt2 deleted file mode 100644 index 947002f8891b0956e4900fa364c75a93ae5f3c6f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/d_install_shared.tt2 +++ /dev/null @@ -1,21 +0,0 @@ -<!-- $Id: d_install_shared.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - - -<form action="[% path_cgi %]" method="post"> -<fieldset> - <br /> - [% FOREACH f = list_file %] - [% f %]<br /><br /> - [% END %] - <label for="mode">[%|loc%]already exist(s), do you want to confirm the install and erase the old file(s) or cancel the install?[%END%]</label><br /> - - <input id="mode" class="MainMenuLinks" type="submit" name="mode_confirm" value="[%|loc%]Confirm[%END%]" /></td> - <input id="mode" class="MainMenuLinks" type="submit" name="mode_cancel" value="[%|loc%]Cancel[%END%]" /></td> - <input type="hidden" name="list" value="[% list %]" /> -[% FOREACH elt = id %] - <input type="hidden" name="id" value="[% elt %]" /> -[% END %] - <input type="hidden" name="action_d_install_shared" value="1" /> -</fieldset> -</form> -<!-- end d_install_shared.tt2 --> \ No newline at end of file diff --git a/sympa-6.1.20-src/web_tt2/d_properties.tt2 b/sympa-6.1.20-src/web_tt2/d_properties.tt2 deleted file mode 100644 index 2120e34bf5b44a1db328ffbe2edf7286b8ce3e3f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/d_properties.tt2 +++ /dev/null @@ -1,67 +0,0 @@ -<!-- $Id: d_properties.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - -<span class="search_form"><a class="actionMenuLinks" href="[% path_cgi %]/d_read/[% list %]/[% escaped_father %]">[%|loc%]Up to higher level directory[%END%]</a></span> - - [% IF url %] - <h2>[%|loc(visible_path)%]Properties of the bookmark %1[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - [% ELSIF directory %] - <h2>[%|loc(visible_path)%]Properties of the directory %1[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - [% ELSE %] - <h2>[%|loc(visible_path)%]Properties of the file %1[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - [% END %] - -<br /> - - [%|loc(doc_owner)%]Owner: %1[%END%] <br /> - [%|loc(doc_date)%]Last update: %1[%END%] <br /> - [%|loc(desc)%]Description: %1[%END%] <br /><br /> - -<p> -<div class="block"> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <label for="content"> - <strong> - [% IF directory %] - [%|loc(fname)%]Describe directory '%1'[%END%] - [% ELSE %] - [%|loc(fname)%]Describe file '%1'[%END%] - [% END %] - </strong></label><br /> - <input id="content" size="50" maxlength="100" name="content" value="[% desc %]" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="serial" value="[% serial_desc %]" /> - <input type="hidden" name="action" value="d_describe" /> - <input class="MainMenuLinks" size="50" maxlength="100" type="submit" name="action_d_describe" value="[%|loc%]Apply[%END%]" /> - </fieldset> - </form> -</div> -</p><p> -<div class="block"> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <label for="new_name"> - <strong> - [% IF directory %] - [%|loc(fname)%]Rename directory %1[%END%] - [% ELSE %] - [%|loc(fname)%]Rename file %1[%END%] - [% END %] - </strong></label><br /> - <input size="50" maxlength="100" name="new_name" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="serial" value="[% serial_desc %]" /> - <input type="hidden" name="action" value="d_rename" /> - - <input class="MainMenuLinks" size="20" maxlength="50" type="submit" name="action_d_rename" value="[%|loc%]Rename[%END%]" /> - </fieldset> - </form> -</div> -</p> - -<br /> -<br /> - -<!-- end d_properties.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/d_read.tt2 b/sympa-6.1.20-src/web_tt2/d_read.tt2 deleted file mode 100644 index e0794faf53dc03873dcc30e714e11fcec498f5e5..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/d_read.tt2 +++ /dev/null @@ -1,405 +0,0 @@ -<!-- $Id: d_read.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - -[% IF file %] - [% INSERT $file IF file %] -[% ELSE %] - -[% IF path %] <span class="search_form"> <a class="actionMenuLinks" href="[% path_cgi %]/d_read/[% list %]/[% escaped_father %]">[%|loc%]Up to higher level directory[%END%]</a></span> -[% END %] - -[% IF expert_page %] - <a class="actionMenuLinks" href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?type=directory&previous_action=d_read&show_user_page=1">[%|loc%]User mode[%END%]</a> - <a class="actionMenuLinksCurrentPage" href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?type=directory&previous_action=d_read&show_expert_page=1">[%|loc%]Expert mode[%END%]</a> -[% ELSE %] - [% IF has_dir_rights %] - <a class="actionMenuLinksCurrentPage" href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?type=directory&previous_action=d_read&show_user_page=1">[%|loc%]User mode[%END%]</a> - <a class="actionMenuLinks" href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?type=directory&previous_action=d_read&show_expert_page=1">[%|loc%]Expert mode[%END%]</a> - [% END %] -[% END %] - -[% IF path %] - -<h1>[%|loc%]Listing of folder[%END%] [% visible_path %] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h1> - - [% IF expert_page %] - <span class="search_form"> - [% IF may_edit %] - <a class="actionMenuLinks" href="[% path_cgi %]/d_delete/[% list %]/[% escaped_path %]" onclick="request_confirm_link('[% path_cgi %]/d_delete/[% list %]/[% escaped_path %]', '[% FILTER escape_quote %][%|loc(visible_path)%]Do you really want to delete %1?[%END%][%END%]'); return false;">[%|loc%]delete[%END%]</a> - <a class="actionMenuLinks" href="[% path_cgi %]/d_properties/[% list %]/[% escaped_path %]">[%|loc%]properties[%END%]</a> - [% END %] - [% IF may_control %] - <a class="actionMenuLinks" href="[% path_cgi %]/d_control/[% list %]/[% escaped_path %]">[%|loc%]access[%END%]</a> - [% END %] - </span> - [% END %] - - <br /> - - [%|loc(doc_owner)%]Owner: %1[%END%] <br /> - [%|loc(doc_date)%]Last update: %1[%END%] <br /> - [% IF doc_title %] - [%|loc(doc_title)%]Description: %1[%END%] <br /><br /> - [% END %] - - <br /> - [% ELSE %] - - <h1>[%|loc%]Listing of root folder[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/shared" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h1> - [% END %] - - <table summary="[%|loc%]Listing of folder[%END%] [% visible_path %]" class="listOfItems"> - <tr> - - [% IF order_by != 'order_by_doc' %] - <th><a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?order=order_by_doc">[%|loc%]Document[%END%]</a> </th> - [% ELSE %] - <th class="sortby">[%|loc%]Document[%END%]</th> - [% END %] - [% IF order_by != 'order_by_author' %] - <th><a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?order=order_by_author">[%|loc%]Author[%END%]</a> </th> - [% ELSE %] - <th class="sortby">[%|loc%]Author[%END%]</span></td> - [% END %] - [% IF order_by != 'order_by_size' %] - <th><a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?order=order_by_size">[%|loc%]Size (Kb)[%END%]</a> </th> - [% ELSE %] - <th class="sortby">[%|loc%]Size (Kb)[%END%]</th> - [% END %] - [% IF order_by != 'order_by_date' %] - <th><a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]?order=order_by_date">[%|loc%]Last update[%END%]</a> </th> - [% ELSE %] - <th class="sortby">[%|loc%]Last update[%END%]</span></td> - [% END %] - - [% IF expert_page %] - <th>[%|loc%]Edit[%END%]</th> - <th>[%|loc%]Delete[%END%]</th> - <th>[%|loc%]Access[%END%]</th> - <th>[%|loc%]Properties[%END%]</th> - [% IF is_editor %] - <th>[%|loc%]Moderation[%END%]</th> - [% END %] - [% END %] - </tr> - - [% IF empty %] - <tr class="color0"> - <td class="text_center" colspan="9"> [%|loc%]Empty folder[%END%] </td> - </tr> - [% ELSE %] - [% IF sort_subdirs %] - [% FOREACH s = sort_subdirs %] - <tr class="color0"> - [% IF escaped_path %] - <td class="review_cels_mail"> <a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]/[% s.escaped_doc %]/"> - [% ELSE %] - <td class="review_cels_mail"> <a href="[% path_cgi %]/d_read/[% list %]/[% s.escaped_doc %]/"> - [% END %] - <img src="[% s.icon %]" alt="[% s.escaped_title %]" /> [% s.doc %]</a></td> - <td class="review_cels"> - [% IF s.author_known %] - [% s.author_mailto %] - [% ELSE %] - [%|loc%]Unknown[%END%] - [% END %] - </td> - <td> </td> - <td class="review_cels"> [% s.date %] </td> - - - [% IF expert_page %] - - [% IF s.edit %] - <td> </td> - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_delete/[% list %]/[% escaped_path %]/[% s.escaped_doc %]" onclick="request_confirm_link('[% path_cgi %]/d_delete/[% list %]/[% escaped_path %]/[% s.escaped_doc %]', '[% FILTER escape_quote %][%|loc(visible_path,s.doc)%]Do you really want to delete %1%2?[%END%][%END%]'); return false;">[%|loc%]delete[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_delete/[% list %]/[% s.escaped_doc %]" onclick="request_confirm_link('[% path_cgi %]/d_delete/[% list %]/[% s.escaped_doc %]', '[% FILTER escape_quote %][%|loc(visible_path,s.doc)%]Do you really want to delete %1%2?[%END%][%END%]'); return false;">[%|loc%]delete[%END%]</a> - [% END %] - </td> - [% ELSE %] - <td> </td> - <td> </td> - [% END %] - - [% IF s.control %] - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_control/[% list %]/[% escaped_path %]/[% s.escaped_doc %]">[%|loc%]access[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_control/[% list %]/[% s.escaped_doc %]">[%|loc%]access[%END%]</a> - [% END %] - </td> - [% ELSE %] - <td> </td> - [% END %] - - [% IF s.edit %] - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_properties/[% list %]/[% escaped_path %]/[% s.escaped_doc %]">[%|loc%]properties[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_properties/[% list %]/[% s.escaped_doc %]">[%|loc%]properties[%END%]</a> - [% END %] - </td> - [% ELSE %] - <td> </td> - [% END %] - - [% IF is_editor %] - <td> </td> - [% END %] - [% END %] - </tr> - [% END %] - [% END %] - - [% IF sort_files %] - [% FOREACH f = sort_files %] - [% IF f.moderate %] - [% IF expert_page %] - <tr class="bg_color_bg"> - [% END %] - [% ELSE %] - <tr class="color0"> - [% END %] - - [% IF f.html %] - <td class="review_cels_mail"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]/[% f.escaped_doc %]" title="[%|loc%]Open in a new window[%END%]" target="html_window"> - [% ELSE %] - <a href="[% path_cgi %]/d_read/[% list %]/[% f.escaped_doc %]" title="[%|loc%]Open in a new window[%END%]" target="html_window"> - [% END %] - <img src="[% f.icon %]" alt="[% f.escaped_title %]" /> [% f.doc %] </a> - </td> - [% ELSIF f.url %] - <td class="review_cels_mail"> - <a href="[% f.url %]" title="[%|loc%]Open in a new window[%END%]" target="html_window"> - <img src="[% f.icon %]" alt="[% f.escaped_title %]" /> [% f.anchor %] </a> - </td> - [% ELSE %] - [% IF f.moderate %] - [% IF expert_page %] - <td class="review_cels_mail"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]/[% f.escaped_doc %]"> - [% ELSE %] - <a href="[% path_cgi %]/d_read/[% list %]/[% f.escaped_doc %]"> - [% END %] - <img src="[% f.icon %]" alt="[% f.escaped_title %]" /> [% f.doc %] </a> - </td> - [% END %] - [% ELSE %] - <td class="review_cels_mail"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_read/[% list %]/[% escaped_path %]/[% f.escaped_doc %]"> - [% ELSE %] - <a href="[% path_cgi %]/d_read/[% list %]/[% f.escaped_doc %]"> - [% END %] - <img src="[% f.icon %]" alt="[% f.escaped_title %]" /> [% f.doc %] </a> - </td> - [% END %] - - [% END %] - - - - [% IF f.moderate %] - [% IF expert_page %] - <td class="review_cels">[%|loc%]to moderate[%END%]</td> - [% END %] - [% ELSE %] - <td class="review_cels"> - [% IF f.author_known %] - [% f.author_mailto %] - [% ELSE %] - [%|loc%]Unknown[%END%] - [%END%] - </td> - [% END %] - - [% IF f.moderate %] - [% IF expert_page %] - <td class="review_cels"> - [% IF !f.url %] - [% f.size %] - [% END %] - </td> - <td class="review_cels"> [% f.date %] </td> - [% END %] - [% ELSE %] - <td class="review_cels"> - [% IF !f.url %] - [% f.size %] - [% END %] - </td> - <td class="review_cels"> [% f.date %] </td> - [% END %] - - - [% IF expert_page %] - [% IF f.edit %] - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_editfile/[% list %]/[% escaped_path %]/[% f.escaped_doc %]">[%|loc%]edit[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_editfile/[% list %]/[% f.escaped_doc %]">[%|loc%]edit[%END%]</a> - [% END %] - </td> - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_delete/[% list %]/[% escaped_path %]/[% f.escaped_doc %]" onclick="request_confirm_link('[% path_cgi %]/d_delete/[% list %]/[% escaped_path %]/[% f.escaped_doc %]', '[% FILTER escape_quote %][%|loc(visible_path,f.doc,f.size)%]Do you really want to delete %1%2 (%3 Kb)?[%END%][%END%]'); return false;">[%|loc%]delete[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_delete/[% list %]/[% f.escaped_doc %]" onclick="request_confirm_link('[% path_cgi %]/d_delete/[% list %]/[% f.escaped_doc %]', '[% FILTER escape_quote %][%|loc(visible_path,f.doc,f.size)%]Do you really want to delete %1%2 (%3 Kb)?[%END%][%END%]'); return false;">[%|loc%]delete[%END%]</a> - [% END %] - </td> - [% ELSE %] - <td> </td> <td> </td> - [% END %] - - [% IF f.control %] - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_control/[% list %]/[% escaped_path %]/[% f.escaped_doc %]">[%|loc%]access[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_control/[% list %]/[% f.escaped_doc %]">[%|loc%]access[%END%]</a> - [% END %] - </td> - [% ELSE %] - <td> </td> - [% END %] - - [% IF f.edit %] - <td class="review_cels"> - [% IF escaped_path %] - <a href="[% path_cgi %]/d_properties/[% list %]/[% escaped_path %]/[% f.escaped_doc %]">[%|loc%]properties[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/d_properties/[% list %]/[% f.escaped_doc %]">[%|loc%]properties[%END%]</a> - [% END %] - </td> - [% ELSE %] - <td> </td> - [% END %] - - [% IF is_editor %] - [% IF f.moderate %] - [% IF expert_page %] - <td class="review_cels"> - <a href="[% path_cgi %]/modindex/[% list %]"> [%|loc%]moderate[%END%]</a> - </td> - [% END %] - [% ELSE %] - <td> </td> - [%END%] - [%END%] - - [% END %] - </tr> - [% END %] - [% END %] - [% END %] - </table> - - <br /> - [% IF expert_page %] - [% IF may_edit %] - [% IF total_edit %] - <div class="block"> - <form method="post" action="[% path_cgi %]"> - <fieldset> - <strong> - [% IF path %] - [%|loc(visible_path)%]Create a new folder inside folder %1[%END%] - [% ELSE %] - [%|loc%]Create a new folder inside root folder[%END%] - [% END %] - </strong> <br /> - <label for="name_doc">[%|loc%]Folder name[%END%]</label> <input id="name_doc" maxlength="30" type="text" name="name_doc" /> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Create[%END%]" name="action_d_create_dir" /> - <input type="hidden" name="previous_action" value="d_read" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="type" value="directory" /> - <input type="hidden" name="action" value="d_create_dir" /> - </fieldset> - </form> - </div><br/> - [% END %] - - <div class="block"> - <form method="post" action="[% path_cgi %]"> - <fieldset> - <strong> [%|loc%]Create a new file[%END%]</strong> <br /> - <label for="name_doc">[%|loc%]File name[%END%]</label> <input id="name_doc" maxlength="30" type="text" name="name_doc" /> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Create[%END%]" name="action_d_create_dir" /> - <input type="hidden" name="previous_action" value="d_read" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="type" value="file" /> - <input type="hidden" name="action" value="d_create_dir" /> - </fieldset> - </form> - </div> - - <br /><div class="block"> - <form method="post" action="[% path_cgi %]"> - <fieldset> - <strong>[%|loc%]Add a bookmark[%END%]</strong><br /> - <label for="name_doc">[%|loc%]title[%END%]</label> <input id="name_doc" maxlength="100" size="25" type="text" name="name_doc" /><br /> - <label for="url">[%|loc%]URL[%END%]</label> <input id="url" size="35" type="text" name="url" /> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Add[%END%]" name="action_d_savefile" /> - <input type="hidden" name="previous_action" value="d_read" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="action" value="d_savefile" /> - </fieldset> - </form> - </div><br/> - <div class="block"> - <form method="post" action="[% path_cgi %]" enctype="multipart/form-data" > - <fieldset> - <label for="uploaded_file"> - <strong> - [% IF path %] - [%|loc(visible_path)%]Upload a file inside folder %1[%END%] - [% ELSE %] - <strong> [%|loc%]Upload a file inside folder SHARED[%END%] - [% END %] - </strong></label><br /> - <input id="uploaded_file" type="file" name="uploaded_file"/> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Publish[%END%]" name="action_d_upload" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - </form> - </div><br /> - - [% IF total_edit %] - <div class="block"> - <form method="post" action="[% path_cgi %]" enctype="multipart/form-data" > - <fieldset> - <label for="unzipped_file"> - <strong> - [% IF path %] - [%|loc(visible_path)%]Unzip a file inside the folder %1[%END%] - [% ELSE %] - [%|loc%]Unzip a file inside the folder SHARED[%END%] - [% END %] - </strong></label><br /> - <input id="unzipped_file" type="file" name="unzipped_file"/> - - <input class="MainMenuLinks" type="submit" value="[%|loc%]Publish[%END%]" name="action_d_unzip" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="path" value="[% path %]" /> - </fieldset> - </form> - </div><br /> - - [% END %] - [% END %] - [% END %] - -[% END %] - -<!-- end d_read.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/d_upload.tt2 b/sympa-6.1.20-src/web_tt2/d_upload.tt2 deleted file mode 100644 index 0a16c2b5f2f431366259f7bcc654eff24cfb4603..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/d_upload.tt2 +++ /dev/null @@ -1,26 +0,0 @@ -<!-- $Id: d_upload.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> -[%|loc(shortname)%]the file %1 already exists[%END%] - -<form action="[% path_cgi %]" method="post"> -<fieldset> - <label for="mode_delete">[%|loc(shortname)%]Do you want to delete the old file %1?[%END%]</label> - <input id="mode_delete" class="MainMenuLinks" type="submit" name="mode_delete" value="[%|loc%]Delete[%END%]" /> - <br /> - <label for="new_name">[%|loc(shortname)%]Do you want to rename your file %1?[%END%]</label> - <br /> - <input id="new_name" size="20" maxlength="100" name="new_name" /> - <input id="mode_rename" class="MainMenuLinks" type="submit" name="mode_rename" value="[%|loc%]Rename[%END%]" /> - - <br /> - <label for="mode_cancel">[%|loc%]Do you want to cancel the upload?[%END%]</label> - <input id="mode_cancel" class="MainMenuLinks" type="submit" name="mode_cancel" value="[%|loc%]Cancel[%END%]" /> - - <input type="hidden" name="action_d_upload" value="1" /> - <input type="hidden" name="serial" value="[% serial_file %]" /> - <input type="hidden" name="path" value="[% path %]" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="shortname" value="[% shortname %]" /> -</fieldset> -</form> - -<!-- end d_upload.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/dump_scenario.tt2 b/sympa-6.1.20-src/web_tt2/dump_scenario.tt2 deleted file mode 100644 index 8a5e2be5c3942a3b0868dd49df5e57828dde6fc7..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/dump_scenario.tt2 +++ /dev/null @@ -1,42 +0,0 @@ -<!-- $Id: dump_scenario.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - -[% IF result %] -<div class="block"> - [% IF result == 'success' %] - [%|loc%]scenario is created but not loaded in the list config[%END%] - [% ELSIF result == 'success_new_name' %] - [%|loc%]new scenario is created but not loaded in the list config. Edit list config if you need to apply it for that list[%END%] - [% ELSIF result == 'unchanged' %] - [%|loc%]new scenario is equal to previous one. Nothing done.[%END%] - [% END %] -</div> -[% ELSE %] - -<div id="ActionHeader"> - <h2 class='block'>[% pname %] [% scenario_name %] </h2> - <span class="text_center">([%|loc%]path:[%END%] [% scenario_path %])</span> -</div> -<font size="-2"> - -<form action="[% path_cgi %]" method="post"> -<fieldset> -<textarea cols="80" rows="10" name="new_scenario_content">[% dumped_scenario %]</textarea><br /> -<input type="hidden" name="list" value="[% list %]" /> -<input type="hidden" name="pname" value="[% pname %]" /> - -<!-- template is ready for saving scenario with scope limited to the current list or to the current robot but wwsympa -[% IF is_listmaster %] -<label for=new_scenario_scope">[%|loc%]scope:[%END%]</label> -<select id="new_scenario_scope" name="new_scenario_scope"> - <option value="robot">[%|loc(robot)%]robot %1[%END%]</option> - <option value="list" selected>[%|loc(list)%]list %1[%END%]</option> -</select> -[% END %] ---> -<label for="new_scenario_name">[%|loc%]scenario name:[%END%]</label> <input id="new_scenario_name" type="text" name="new_scenario_name" size="30" value="[% scenario_name %]" /> -<input class="MainMenuLinks" type="submit" name="action_dump_scenario" value="[%|loc%]save[%END%]" /> -</fieldset> -</form> -</font> -[% END %] -<!-- end dump_scenario.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/dumpvars.tt2 b/sympa-6.1.20-src/web_tt2/dumpvars.tt2 deleted file mode 100644 index a6de301ec12ec30d8f6caaaa75dde9346e2f76fa..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/dumpvars.tt2 +++ /dev/null @@ -1,7 +0,0 @@ -<!-- $Id: dumpvars.tt2 5106 2008-08-13 14:43:44Z olivier.salaun $ --> -<div class="block"> -<hr /> -[% html_dumpvars %] -<hr /> -</div> -<!-- end dumpvars.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/edit_attributes.tt2 b/sympa-6.1.20-src/web_tt2/edit_attributes.tt2 deleted file mode 100644 index a3bdcabd84e7c656bbc9608a13822d7ba1e77c1d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/edit_attributes.tt2 +++ /dev/null @@ -1,28 +0,0 @@ -<!-- $Id: edit_attributes.tt2 $ --> -[% IF list_conf.custom_attribute.size > 0 %] -<div class="block"> -<i>[%|loc%]Additional information[%END%]</i> -<table> -[% FOREACH k IN list_conf.custom_attribute %] -<tr><td class="text_right"><label for="custom_attribute.[% k.id %]">[%|loc%][% k.name %]:[% END %]<br/> -<i>[% k.comment %]</i> -</label></td><td> -[% SET m = subscriber.custom_attribute.item(k.id).value %] -[% IF k.type == 'string' %]<input type="text" name="custom_attribute.[% k.id %]" id="custom_attribute.[% k.id %]" value="[% subscriber.custom_attribute.item(k.id).value %]" size="40" /> -[% ELSIF k.type == 'integer' %]<input type="text" name="custom_attribute.[% k.id %]" id="custom_attribute.[% k.id %]" value="[% subscriber.custom_attribute.item(k.id).value %]" size="10" /> -[% ELSIF k.type == 'text' %]<textarea cols="50" rows="5" name="custom_attribute.[% k.id %]" id="custom_attribute.[% k.id %]" value="[% subscriber.custom_attribute.item(k.id).value %]" size="500">[% subscriber.custom_attribute.item(k.id).value %]</textarea> -[% ELSIF k.type == 'enum' %]<select name="custom_attribute.[% k.id %]"><option value=""></option> -[% FOREACH l IN k.enum_values.split(',') %] -<option [% IF l == "$m" %]selected[% END %] value="[% l %]">[% l %]</option><br> -[% END %] -</select> -[% ELSE %] -[% subscriber.custom_attribute.item(k.id).value %] -[% END %] [% IF k.optional == 'required' %]*[% END %] -<!--(k.id[% k.id %]) (m[% m %]) (k.type[% k.type %])--></td></tr>[% END %] -</table> -<i>[%|loc%]*: Required element[%END%]</i> -</div> - -[% END %] -<!-- end edit_attributes.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/edit_list_request.tt2 b/sympa-6.1.20-src/web_tt2/edit_list_request.tt2 deleted file mode 100644 index 91ce0dbcc2491c57a7514c33a3f9e8fc679cac76..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/edit_list_request.tt2 +++ /dev/null @@ -1,456 +0,0 @@ -<!-- $Id: edit_list_request.tt2 10074 2013-12-29 10:08:18Z sikeda $ --> -<div class="block"> - -<h2>[%|loc%]Configuring the list[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/listconfig" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> -<br /> - -[% IF !group %] - [%|loc%]You can choose below a subset of parameters to edit:[%END%] - <ul> -[% IF GROUP == 'description' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/description" >[%|loc%]List definition[%END%]</a></li> - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/sending" >[%|loc%]Sending/receiving setup[%END%]</a></li> - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/command" >[%|loc%]Privileges[%END%]</a></li> - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/archives" >[%|loc%]Archives[%END%]</a></li> - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/bounces" >[%|loc%]Bounce management[%END%]</a></li> - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/data_source" >[%|loc%]Data sources setup[%END%]</a></li> - <li><a href="[% path_cgi %]/edit_list_request/[% list %]/other" >[%|loc%]Miscellaneous[%END%]</a></li> - </ul> -[% ELSE %] - <form class="bold_label" action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="serial" value="[% serial %]" /> - [% FOREACH p = param %] - - [% IF p.may_edit != 'hidden' %] - - [% IF p.changed == '1' %] - <div class="CurrentBlock"> - [% ELSE %] - <div class="block"> - [% END %] - - <span class="edit_list_request_help"> - [% IF p.type == 'scenario' %] - [% IF is_listmaster %] - <a class="input" href="[% path_cgi %]/dump_scenario/[% list %]/[% p.name %]" title="[%|loc%]scenario source[%END%]">[%|loc%]scenario source[%END%]</a> - [% END %] - [% END %] - <a class="input" href="[% path_cgi %]/nomenu/help/editlist#[% p.name %]" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a> - </span> - <h4> - [% IF p.title %] - [% p.title %] - [% IF is_listmaster %] - ([% p.name %]) - [% END %] - [% ELSE %] - [% p.name %] - [% END %] - [% IF is_listmaster %] - [% IF p.default == '1' %] - [%|loc%](default)[%END%] - [% END %] - [% END %] - </h4> - <div class="edit_list_request_enum"> - - [% IF p.occurrence == 'multiple' %] - <!-- Multiple params --> - - [% IF p.type == 'enum' %] - <!-- Multiple Enum --> - - [% IF p.may_edit == 'write' %] - <select name="multiple_param.[% p.name %]" multiple="multiple"> - [% FOREACH enum = p.value %] - <option value="[% enum.key %]" - [% IF enum.value.selected == '1' %] - selected="selected" - [% END %] - [% IF enum.value.title %] - >[% enum.value.title %]</option> - [% ELSE %] - >[%|optdesc('',is_listmaster)%][% enum.key %][%END%]</option> - [% END %] - [% END %] - </select> - [% ELSIF p.may_edit == 'read' %] - [% FOREACH enum = p.value %] - [% IF enum.value.selected == '1' %] - [% IF enum.value.title %] - [% enum.value.title %] - [% ELSE %] - [%|optdesc('',is_listmaster)%][% enum.key %][%END%] - [% END %] - [% END %] - [% END %] - [% END %] - - [% ELSE %] - [% o_INDEX = 0 %] - [% FOREACH o = p.value %] - <br /> - <!-- Foreach occurrence --> - - [% IF p.type == 'paragraph' %] - <!-- ParagrapH --> - [% FOREACH key = o.value %] - [% IF key.may_edit != 'hidden' %] - <label for="single_param.[% p.name %].[% o_INDEX %].[% key.name %]"> - [% IF key.title %] - [% key.title %][% IF is_listmaster %] ([% key.name %])[% END %][%|loc%]:[%END%] - [% ELSE %] - [% key.name %][%|loc%]:[%END%] - [% END %] - </label> - - [% IF key.type == 'enum' %] - <!-- Enum --> - [% IF key.may_edit == 'write' %] - <select name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" id="single_param.[% p.name %].[% o_INDEX %].[% key.name %]"> - [% FOREACH enum = key.value %] - <option value="[% enum.key %]" - [%- IF enum.value.selected == '1' -%] - selected="selected" - [%- END -%] - >[% IF enum.value.title %][% enum.value.title %][% ELSE %][%|optdesc('',is_listmaster)%][% enum.key %][%END%][% END %] - </option> - [% END %] - </select> - [% ELSIF key.may_edit == 'read' %] - [% FOREACH enum = key.value %] - [% IF enum.value.selected == '1' %] - [% IF enum.value.title %][% enum.value.title %][% ELSE %][%|optdesc('',is_listmaster)%][% enum.key %][%END%][% END %] - <input type="hidden" name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" value="[% enum.key %]" /> - [% END %] - [% END %] - [% END %] - <br /> - [% ELSIF key.type == 'datasource' %] - <!-- Datasource --> - [% IF key.may_edit == 'write' %] - <select name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" id="single_param.[% p.name %].[% o_INDEX %].[% key.name %]"> - [% FOREACH source = key.value %] - <option value="[% source.value.name %]" - [% IF source.value.selected == '1' %] - selected="selected" - [% END %] - >[% source.value.title %]</option> - [% END %] - </select> - <br /> - [% ELSIF key.may_edit == 'read' %] - [% FOREACH source = key.value %] - [% IF source.value.selected == '1' %] - [% source.value.title %][% IF is_listmaster && source.value.name %] ([% source.value.name %])[% END %] - <input type="hidden" name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" value="[% source.value.name %]" /> - [% END %] - [% END %] - [% END %] - [% ELSE %] - <!-- Scalar --> - [% IF key.may_edit == 'write' %] - [% IF key.field_type == 'password' %] - <input type="password" name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" id="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" value="[% key.value %]" size="[% key.length %]" /> - [% ELSE %] - <input type="text" name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" id="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" value="[% key.value %]" size="[% key.length %]" /> - [% END %] - [% ELSIF key.may_edit == 'read' %] - [% IF key.field_type == 'password' %] - [% key.hidden_field %] - [% ELSE %] - [% key.value %] - [% END %] - <input type="hidden" name="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" value="[% key.value %]" /> - [% END %] - [% key.unit %]<br /> - [% END %] - - [% END %] - [% END %] - [% ELSE %] - <!-- Scalar --> - [% IF p.may_edit == 'write' %] - <input type="text" name="single_param.[% p.name %].[% o_INDEX %]" id="single_param.[% p.name %].[% o_INDEX %].[% key.name %]" value="[% o.value %]" size="[% o.length %]" /> - [% ELSIF p.may_edit == 'read' %] - [% o.value %] - [% END %] - [% o.unit %]<br /> - [% END %] - [% o_INDEX = o_INDEX + 1 %] - [% END %] - <!-- END Foreach occurrence --> - [%END%] - - <!-- ENDIF Enum --> - <br /> - - [% ELSE %] - <!-- Single params --> - - [% IF p.type == 'scenario' %] - <!-- Scenario --> - [% IF p.may_edit == 'write' %] - <select name="single_param.[% p.name %].name" id="single_param.[% p.name %].name" onchange="this.form.submit();"> - [% FOREACH scenario = p.value %] - [% UNLESS scenario.value.name.match('(default)\s*$') %] - <option value="[% scenario.value.name %]" - [% IF scenario.value.selected == '1' %] - selected="selected" - [% END %] - >[% scenario.value.web_title %][% IF is_listmaster && scenario.value.name %] ([% scenario.value.name %])[% END %]</option> - [% END %] - [% END %] - </select> - <br /> - [% ELSIF p.may_edit == 'read' %] - [% FOREACH scenario = p.value %] - [% IF scenario.value.selected == '1' %] - [% scenario.value.web_title %][% IF is_listmaster && scenario.value.name %] ([% scenario.value.name %])[% END %] - [% END %] - [% END %] - [% END %] - - [% ELSIF p.type == 'task' %] - <!-- Task --> - [% IF p.may_edit == 'write' %] - <select name="single_param.[% p.name %].name" id="single_param.[% p.name %].name"> - [% FOREACH task = p.value %] - <option value="[% task.value.name %]" - [% IF task.value.selected == '1' %] - selected="selected" - [% END %] - >[% task.value.title %][% IF is_listmaster && task.value.name %] ([% task.value.name %])[% END %]</option> - [% END %] - </select> - [% ELSIF p.may_edit == 'read' %] - [% FOREACH task = p.value %] - [% IF task.value.selected == '1' %] - [% task.value.title %][% IF is_listmaster && task.vakue.name %] ([% task.value.name %])[% END %] - [% END %] - [% END %] - [% END %] - [% ELSIF p.type == 'datasource' %] - <!-- Datasource --> - [% IF p.may_edit == 'write' %] - <select name="single_param.[% p.name %].name" id="single_param.[% p.name %].name"> - [% FOREACH source = p.value %] - <option value="[% source.value.name %]" - [% IF source.value.selected == '1' %] - selected="selected" - [% END %] - >[% source.value.title %][% IF is_listmaster && source.value.name %] ([% source.value.name %])[% END %]</option> - [% END %] - </select> - [% ELSIF p.may_edit == 'read' %] - [% FOREACH source = p.value %] - [% IF source.value.selected == '1' %] - [% source.value.title %][% IF is_listmaster && source.value.name %] ([% source.value.name %])[% END %] - [% END %] - [% END %] - [% END %] - [% ELSIF p.type == 'paragraph' %] - - <!-- Paragraph --> - [% FOREACH key = p.value %] - [% IF key.may_edit != 'hidden' %] - <label for="single_param.[% p.name %].[% key.name %].name"> - [% IF key.title %] - [% key.title %][% IF is_listmaster %] ([% key.name %])[% END %][%|loc%]:[%END%] - [% ELSE %] - [% key.name %][%|loc%]:[%END%] - [% END %] - </label> - - [% IF key.type == 'scenario' %] - <!-- Scenario --> - [% IF key.may_edit == 'write' %] - <select name="single_param.[% p.name %].[% key.name %].name" id="single_param.[% p.name %].[% key.name %].name"> - [% FOREACH scenario = key.value %] - <option value="[% scenario.value.name %]" - [% IF scenario.value.selected == '1' %] - selected="selected" - [% END %] - >[% scenario.value.web_title %][% IF is_listmaster && scenario.value.name %] ([% scenario.value.name %])[% END %]</option> - [% END %] - </select> - <br /> - [% ELSIF key.may_edit == 'read' %] - [% FOREACH scenario = key.value %] - [% IF scenario.value.selected == '1' %] - [% scenario.value.web_title %][% IF is_listmaster && scenario.value.name %] ([% scenario.value.name %])[% END %] - [% END %] - [% END %] - [% END %] - [% ELSIF key.type == 'task' %] - <!-- Task --> - [% IF key.may_edit == 'write' %] - <select name="single_param.[% p.name %].[% key.name %].name" id="single_param.[% p.name %].[% key.name %].name"> - [% FOREACH task = key.value %] - <option value="[% task.name %]" - [% IF task.value.selected == '1' %] - selected="selected" - [% END %] - >[% task.value.title %][% IF is_listmaster && task.value.name %] ([% task.value.name %])[% END %]</option> - [% END %] - </select> - [% ELSIF key.may_edit == 'read' %] - [% FOREACH task = key.value %] - [% IF task.value.selected == '1' %] - [% task.value.title %][% IF is_listmaster && task.value.name %] ([% task.value.name %])[% END %] - [% END %] - [% END %] - [% END %] - [% ELSIF key.type == 'datasource' %] - <!-- Datasource --> - [% IF key.may_edit == 'write' %] - <select name="single_param.[% p.name %].[% key.name %].name" id="single_param.[% p.name %].[% key.name %].name"> - [% FOREACH source = key.value %] - <option value="[% source.name %]" - [% IF source.value.selected == '1' %] - selected="selected" - [% END %] - >[% source.value.title %][% IF is_listmaster && source.value.name %] ([% source.value.name %])[% END %]</option> - [% END %] - </select> - [% ELSIF key.may_edit == 'read' %] - [% FOREACH source = key.value %] - [% IF source.value.selected == '1' %] - [% source.value.title %][% IF is_listmaster && source.value.name %] ([% source.value.name %])[% END %] - [% END %] - [% END %] - [% END %] - - [% ELSIF key.type == 'enum' %] - <!-- Enum --> - [% IF key.may_edit == 'write' %] - [% IF key.occurrence == 'multiple' %] - <select name="multiple_param.[% p.name %].[% key.name %]" id="multiple_param.[% p.name %].[% key.name %].name" multiple="multiple"> - [% ELSE %] - <select name="single_param.[% p.name %].[% key.name %]" id="single_param.[% p.name %].[% key.name %].name"[% IF p.name == 'lang' %] class="LanguageNeutral"[%END%]> - [% END %] - [% FOREACH enum = key.value %] - <option value="[% enum.key %]" - [% IF enum.value.selected == '1' %] - selected="selected" - [% END %] - [% IF p.name == 'lang' %] - lang="[%enum.value.lang_tag%]" - xml:lang="[%enum.value.lang_tag%]" - [%END%] - [% IF enum.value.title %] - >[% enum.value.title %]</option> - [% ELSE %] - >[%|optdesc('',is_listmaster)%][% enum.key %][%END%]</option> - [% END %] - [% END %] - </select> - <br /> - [% ELSIF key.may_edit == 'read' %] - [% FOREACH enum = key.value %] - [% IF enum.value.selected == '1' %] - [% IF enum.value.title %] - [% IF p.name == 'lang' %] - <span - class="LanguageNeutral" - lang="[%enum.value.lang_tag%]" - xml:lang="[%enum.value.lang_tag%]" - >[% enum.value.title %]</span> - [% ELSE %] - [% enum.value.title %] - [% END %] - [% ELSE %] - [%|optdesc('',is_listmaster)%][% enum.key %][%END%] - [% END %] - [% END %] - [% END %] - [% END %] - - [% ELSE %] - <!-- Scalar --> - [% IF key.may_edit == 'write' %] - <input type="text" name="single_param.[% p.name %].[% key.name %]" id="single_param.[% p.name %].[% key.name %].name" value="[% key.value %]" size="[% key.length %]" /> - - [% ELSIF key.may_edit == 'read' %] - [% key.value %] - [% END %] - [% key.unit %] - <br /> - [% END %] - - - [% END %] - [% END %] - - [% ELSIF p.type == 'enum' %] - <!-- Enum --> - [% IF p.may_edit == 'write' %] - <select name="single_param.[% p.name %]" id="single_param.[% p.name %].name"[% IF p.name == 'lang' %] class="LanguageNeutral"[%END%]> - [% FOREACH enum = p.value %] - <option value="[% enum.key %]" - [% IF enum.value.selected == '1' %] - selected="selected" - [% END %] - [% IF p.name == 'lang' %] - lang="[%enum.value.lang_tag%]" - xml:lang="[%enum.value.lang_tag%]" - [%END%] - [% IF enum.value.title %] - >[% enum.value.title %]</option> - [% ELSE %] - >[%|optdesc('',is_listmaster)%][% enum.key %][%END%]</option> - [% END %] - [% END %] - </select> - [% ELSIF p.may_edit == 'read' %] - [% FOREACH enum = p.value %] - [% IF enum.value.selected == '1' %] - [% IF enum.value.title %] - [% IF p.name == 'lang' %] - <span - class="LanguageNeutral" - lang="[%enum.value.lang_tag%]" - xml:lang="[%enum.value.lang_tag%]" - >[% enum.value.title %]</span> - [% ELSE %] - [% enum.value.title %] - [% END %] - [% ELSE %] - [%|optdesc('',is_listmaster)%][% enum.key %][%END%] - [% END %] - [% END %] - [% END %] - [% END %] - [% ELSE %] - <!-- Scalar --> - [% IF p.may_edit == 'write' %] - <input type="text" name="single_param.[% p.name %]" id="single_param.[% p.name %].name" value="[% p.value %]" size="[% p.length %]" /> - [% ELSIF p.may_edit == 'read' %] - [% p.value %] - [% END %] - [% p.unit %]<br /> - [% END %] - - [% END %] - </div><!-- /div class="edit_list_request_enum" --> - [% IF p.default == '1' %] - <span class="default">[%|loc%]default[%END%]</span> - [% END %] - - </div><br /> - [% END %] - [% END %] - - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="group" value="[% group %]" /> - <input type="hidden" name="action" value="edit_list" /> - [% IF is_form_editable == '1' %] - <input class="MainMenuLinks" type="submit" name="action_edit_list" value="[%|loc%]Update[%END%]" /> - [% END %] - </fieldset> - </form> -[% END %] - -</div > -<!-- end edit_list_request.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/editfile.tt2 b/sympa-6.1.20-src/web_tt2/editfile.tt2 deleted file mode 100644 index 6b37ed0550e3fcc533950c40fa3fbd62a373d5e9..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/editfile.tt2 +++ /dev/null @@ -1,100 +0,0 @@ -<!-- $Id: editfile.tt2 7565 2012-08-29 02:28:09Z sikeda $ --> -<div class="block"> - -<h2>[%|loc%]Edit list templates[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#customize" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - -[% IF file %] -<form class="noborder" action="[% path_cgi %]" method="post"> -<fieldset> -<h3>[% IF complete %][%|loc(complete)%]Edit the file %1[%END%][% ELSE %][%|loc(file)%]Edit the file %1[%END%][% END %]</h3> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="file" value="[% file %]" /> -<textarea name="content" cols="80" rows="25"> -[% filecontent %]</textarea> -<br /> - <input class="MainMenuLinks" type="submit" name="action_savefile" value="[%|loc%]Save[%END%]" /> -</fieldset> -</form> - -[% ELSE %] -<form class="noborder" action="[% path_cgi %]" method="post"> -<fieldset> - -[%|loc%]You can edit several messages/files associated with your list:[%END%]<br /><br /> - -[% item1 = 'homepage' - item2 = 'info' %] -[% IF files.$item1 || files.$item2 %] -<h3>[%|loc%]HTML pages[%END%]</h3> - -[% IF files.$item1 %] -<a href="[% path_cgi %]/editfile/[%list%]/homepage" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]List homepage: HTML text to describe the list. It is printed on the right-hand side of the main list page. (default for this is the list description)[%END%]<br /> -[% END %] -[% IF files.$item2 %] -<a href="[% path_cgi %]/editfile/[%list%]/info" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]List description: This text is sent as an answer to the mail command INFO. It can also be included in the <em>Welcome message</em>.[%END%]<br /> -[% END %] - -[% END %] - -[% item1 = 'welcome.tt2' - item2 = 'reject.tt2' - item3 = 'remind.tt2' - item4 = 'invite.tt2' %] -[% IF files.$item1 || files.$item2 || files.$item3 || files.$item4 %] -<h3>[%|loc%]Automatic messages[%END%]</h3> - -[% IF files.$item1 %] -<a href="[% path_cgi %]/editfile/[%list%]/welcome.tt2" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Welcome message: This message is sent to new subscribers. It can be a full MIME structured message (only for MIME gurus).[%END%]<br /> -[% END %] -[% IF files.$item2 %] -<a href="[% path_cgi %]/manage_template/ls_template/[% list %]/reject" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Rejection message: when a message is rejected by list editor, a notification can be sent to the original author. You may prepare various rejection messages.[%END%]<br /> -[% END %] -[% IF files.$item3 %] -<a href="[% path_cgi %]/editfile/[%list%]/remind.tt2" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Remind message: This message is sent to each subscriber -when using the command REMIND. It's very useful to help people who are confused about their own subscription emails or people who are not able to unsubscribe themselves.[%END%]<br /> -[% END %] -[% IF files.$item4 %] -<a href="[% path_cgi %]/editfile/[%list%]/invite.tt2" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Subscribing invitation message: sent to a person if someone -uses the INVITE command to invite someone to subscribe.[%END%]<br /> -[% END %] - -[% END %] - -[% item1 = 'message.footer' - item2 = 'message.header' %] -[% IF files.$item1 || files.$item2 %] -<h3>[%|loc%]Added in distributed messages[%END%]</h3> - -[% IF files.$item1 %] -<a href="[% path_cgi %]/editfile/[%list%]/message.footer" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Message footer: If this file is not empty, it is added as a MIME attachment at the end of each message distributed to the list.[%END%]<br /> -[% END %] -[% IF files.$item2 %] -<a href="[% path_cgi %]/editfile/[%list%]/message.header" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Message header: If this file is not empty, it is added as a MIME attachment at the beginning of each message distributed to the list.[%END%]<br /> -[% END %] - -[% END %] - -[% item1 = 'bye.tt2' - item2 = 'removed.tt2' - item3 = 'your_infected_msg.tt2' %] -[% IF files.$item1 || files.$item2 || files.$item3 %] -<h3>[%|loc%]More[%END%]</h3> - -[% IF files.$item1 %] -<a href="[% path_cgi %]/editfile/[%list%]/bye.tt2" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Unsubscribe message: This message is sent when users leave the list.[%END%]<br /> -[% END %] -[% IF files.$item2 %] -<a href="[% path_cgi %]/editfile/[%list%]/removed.tt2" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Deletion message: This message is sent to users when you -remove them from the list using the DEL command (unless you hit the Quiet button).[%END%]<br /> -[% END %] -[% IF files.$item3 %] -<a href="[% path_cgi %]/editfile/[%list%]/your_infected_msg.tt2" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> [%|loc%]Virus infection message: This message is sent to the sender of a message in which a virus was found.[%END%]<br /> -[% END %] - -[% END %] - -</fieldset></form> -[% END %] - -</div> -<!-- end editfile.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/editsubscriber.tt2 b/sympa-6.1.20-src/web_tt2/editsubscriber.tt2 deleted file mode 100644 index c8d40b6c7bad7e8a2fbf9767e94604e15906edda..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/editsubscriber.tt2 +++ /dev/null @@ -1,82 +0,0 @@ -<!-- $Id: editsubscriber.tt2 6982 2011-01-18 15:05:02Z david.verdin $ --> -<div class="block"> -<form action="[% path_cgi %]" method="post"> -<fieldset> -<h3 class="block">[%|loc%]Subscriber information[%END%]</h3> - -<input type="hidden" name="previous_action" value="[% previous_action %]" /> -<input type="hidden" name="list" value="[% list %]" /> -<input type="hidden" name="email" value="[% current_subscriber.escaped_email %]" /> -<label for="new_email">[%|loc%]Email:[%END%] </label> - <input type="text" name="new_email" id="new_email" value="[% current_subscriber.escaped_email %]" size="25" /><br /> -<label for="gecos">[%|loc%]Name:[%END%] </label> - <input type="text" name="gecos" id="gecos" value="[% current_subscriber.gecos %]" size="25" /><br /> -[% IF current_subscriber.custom_attribute %] -[% SET subscriber = current_subscriber ; -PROCESS edit_attributes.tt2 ; -END %] -[%|loc%]Subscribed since:[%END%] [% current_subscriber.date %]<br /> -[%|loc%]Last update:[%END%] [% current_subscriber.update_date %]<br /> -<label for="reception">[%|loc%]Receiving:[%END%] </label><select name="reception" id="reception"> - [% FOREACH r = reception %] - <option value="[% r.key %]" [% r.value.selected %]>[% r.value.description %]</option> - [% END %] - </select> - <br /> - -<label for="visibility">[%|loc%]Visibility:[%END%] </label> - <select id="visibility" name="visibility"> - [% FOREACH r = visibility %] - <option value="[% r.key %]" [% r.value.selected %]>[% r.value.description %]</option> - [% END %] - </select><br /> - -<label for="lang">[%|loc%]Language:[%END%] </label>[% current_subscriber.lang %]<br /> -[% IF pictures_display %] -<label for="picture">[%|loc%]Picture:[%END%] </label> - <a id="picture" href="[% current_subscriber.pictures_url %]" title="[% current_subscriber.pictures_url %],[%|loc%]Open in a new window[%END%]" target="pictures"> - <img id="large_picture" src="[% current_subscriber.pictures_url %]" alt="[% current_subscriber.escaped_email %]'s picture"/> - </a><br /> - [% IF current_subscriber.escaped_email == user.email %] - <a href="[% path_cgi %]/suboptions/[% list %]" title="">[%|loc%]Changing your picture for this list[%END%]</a><br /> - [% END %] -[% END %] -[% IF additional_fields %] -[% FOREACH field = additional_fields %] - [% IF field.value.type == 'enum' %] - <label for="additional_field_[% field.key %]">[% field.key %][%|loc%]:[%END%] </label> - <select name="additional_field_[% field.key %]" id="additional_field_[% field.key %]"> - <option value=""> </option> - [% FOREACH e = field.value.enum %] - <option value="[% e.key %]" [% e.value %]>[% e.key %]</option> - [% END %] - </select><br /> - [% ELSE %] - <label for="additional_field_[% field.key %]">[% field.key %][%|loc%]:[%END%]</label><input type="text" name="additional_field_[% field.key %]" id="additional_field_[% field.key %]" value="[% field.value.value %]" size="25" /><br /> - [% END %] -[% END %] -[% END %] - -<input class="MainMenuLinks" type="submit" name="action_set" value="[%|loc%]Update[%END%]" /> -<input class="MainMenuLinks" type="submit" name="action_del" value="[%|loc%]Unsubscribe the User[%END%]" /> -<input id="quiet" type="checkbox" name="quiet" /><label for="quiet"> [%|loc%]quiet[%END%]</label> -<br /> - -[% IF current_subscriber.bounce %] -<br /> -<span class="bg_color_error">[%|loc%]Bouncing address[%END%]</span> -<br /> - -[% IF current_subscriber.escaped_bounce_address %] -<label for="verp">[%|loc%]Address detected via VERP technology[%END%] </label>[% current_subscriber.escaped_bounce_address %]<br /> -[% END %] -[%|loc%]Status:[%END%] [% current_subscriber.bounce_status %] ([% current_subscriber.bounce_code %])<br /> -[%|loc%]Bounce count:[%END%] [% current_subscriber.bounce_count %]<br /> -[%|loc%]Period:[%END%] [%|loc(current_subscriber.first_bounce,current_subscriber.last_bounce)%]from %1 to %2[%END%]<br /> -<a href="[% path_cgi %]/viewbounce/[% list %]/[% current_subscriber.escaped_email %]">[%|loc%]View last bounce[%END%]</a><br /> -<input class="MainMenuLinks" type="submit" name="action_resetbounce" value="[%|loc%]Reset errors[%END%]" /><br /> -[% END %] -</fieldset> -</form> -</div> -<!-- end editsubscriber.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/error.tt2 b/sympa-6.1.20-src/web_tt2/error.tt2 deleted file mode 100644 index 8bede87294fd739e97e01d50ddb3697ab84f1aac..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/error.tt2 +++ /dev/null @@ -1,159 +0,0 @@ -<!-- $Id: error.tt2 10242 2014-02-16 02:58:47Z sikeda $ --> - -<div id="ErrorBlock"></div> -<div id="ErrorMsg"> -[%###################-%] -[%#### INTERN ERROR -%] -[%###################-%] -[% FOREACH i_err = intern_errors %] -[%|loc(i_err.action)%]INTERNAL SERVER ERROR (%1)[%END-%] - - [% IF i_err.msg == 'month_not_found' %][%|loc(i_err.month)%]Unable to find month '%1'[%END%] - [% ELSIF i_err.msg == 'inaccessible_archive' %][%|loc(i_err.year_month)%]Archives from %1 are not accessible[%END%] - [% ELSIF i_err.msg == 'unable_to_load_list_of_topics' %][%|loc%]Unable to load list topics.[%END%] - [% ELSIF i_err.msg == 'unable_to_load_create_list_templates' %][%|loc%]Unable to load create_list templates.[%END%] - [% ELSIF i_err.msg == 'sync_include_failed' %][%|loc%]Failed to inlude members[%END%] - [% ELSIF i_err.msg == 'sync_include_admin_failed' %][%|loc%]Failed to include list admins[%END%] - [% ELSIF i_err.msg == 'no_owner_defined' %][%|loc%]No owner is defined for the list[%END%] - [% ELSIF i_err.msg == 'exportation_failed' %][%|loc(i_err.listname)%]The exportation failed for list '%1'[%END%] - [% ELSIF i_err.msg == 'cannot_unzip' %][%|loc(name)%]Cannot unzip file '%1'.[%END%] - [% ELSIF i_err.msg == 'auth_msg_failed' %][%|loc(i_err.key)%]Unable to access the message authenticated with key %1[%END%] - [% ELSIF i_err.msg == 'no_identified_user' %][%|loc%]Failed to get your email address from the authentication service.[%END%] - [% ELSIF i_err.msg == 'err_404' %][%|loc(i_err.key)%]File not found.[%END%] - [% ELSIF i_err.msg == 'db_error' %][%|loc%]Database error.[%END%] - [% ELSIF i_err.msg == 'db_update_failed' %][%|loc(i_err.key)%]Failed to update database.[%END%] - [% ELSIF i_err.msg == 'file_update_failed' %][%|loc(i_err.key)%]Failed to update a file.[%END%] - [% ELSIF i_err.msg == 'create_list' %][%|loc(i_err.listname)%]Failed creating list '%1'. The list might already exist or listname might include forbidden characters.[%END%] - [% ELSIF i_err.msg == 'unable_to_rename_list' %][%|loc(i_err.listname,i_err.new_listname)%]Unable to rename list '%1' to '%2'.[%END%] - -[% END %] - -[% END %] -[%###################-%] -[%#### SYSTEM ERROR -%] -[%###################-%] -[% FOREACH s_err = system_errors %] -[%|loc(s_err.action)%]SYSTEM ERROR (%1)[%END-%] - [% IF s_err.msg == 'a' %] - [% END %] - -[% END %] -[%###################-%] -[%#### USER ERROR -%] -[%###################-%] -[% FOREACH u_err = user_errors %] -[%|loc(u_err.action)%]ERROR (%1) [%END-%] - - [% IF u_err.msg == 'wrong_param' %][%|loc()%]Wrong parameters[%END%] - [% ELSIF u_err.msg == 'unknown_action' %][%|loc()%]Unknown action[%END%] - [% ELSIF u_err.msg == 'syntax_errors' %][%|loc(u_err.params)%]Syntax errors with the following parameters: %1[%END%] - [% ELSIF u_err.msg == 'authorization_reject' %][%|loc()%]Authorization rejected. Maybe you forgot to log in?[%END%] - [% ELSIF u_err.msg == 'unknown_list' %][%|loc(u_err.list)%]List %1 not found[%END%] - [% ELSIF u_err.msg == 'unknown_robot' %][%|loc(u_err.new_robot)%]%1: unknown robot[%END%] - [% ELSIF u_err.msg == 'unknown_family' %][%|loc(u_err.family)%]%1: unknown family[%END%] - [% ELSIF u_err.msg == 'already_login' %][%|loc(u_err.email)%]You are already logged in as %1[%END%] - [% ELSIF u_err.msg == 'passwd_reminder_not_allowed' %][%|loc%]You can not get a password reminder; probably because your password is managed outside Sympa (Single Sign-On system or LDAP directory).[%END%] - [% ELSIF u_err.msg == 'no_email' %][%|loc%]Please provide email address[%END%] - [% ELSIF u_err.msg == 'missing_arg' %][%|loc(u_err.argument)%]Missing argument %1[%END%] - [% ELSIF u_err.msg == 'wrong_value' %][%|loc(u_err.argument)%]Wrong value for parameter %1[%END%] - [% ELSIF u_err.msg == 'no_user' %][%|loc%]You need to login[%END%] - [% ELSIF u_err.msg == 'incorrect_email' %][%|loc(u_err.email)%]Address "%1" is incorrect[%END%] - [% ELSIF u_err.msg == 'incorrect_passwd' %][%|loc%]Provided password is incorrect[%END%] - [% ELSIF u_err.msg == 'init_passwd' %][%|loc%]You did not choose a password, request a reminder of the initial password[%END%] - [% ELSIF u_err.msg == 'ldap_user' %][%|loc%]Your password is stored in an LDAP directory, therefore Sympa cannot post you a reminder[%END%] - [% ELSIF u_err.msg == 'nb_days_to_much' %][%|loc(u_err.nb_days)%]The period is too long (%1 days)[%END%] - [% ELSIF u_err.msg == 'no_subscriber' %][%|loc%]List has no subscribers[%END%] - [% ELSIF u_err.msg == 'no_page' %][%|loc(u_err.page)%]No page %1[%END%] - [% ELSIF u_err.msg == 'no_filter' %][%|loc%]Missing filter[%END%] - [% ELSIF u_err.msg == 'not_subscriber' %] - [% IF u_err.email %] [%|loc(u_err.email)%]Not subscribed: %1[%END%] - [% ELSE %][%|loc(u_err.list)%]You are not subscribed to list %1[%END%] - [% END %] - [% ELSIF u_err.msg == 'custom_attribute' %][%|loc%]Check the additional information[%END%] - [% ELSIF u_err.msg == 'not_available_reception_mode' %][%|loc(u_err.reception_mode)%]%1 is not an available reception mode[%END%] - [% ELSIF u_err.msg == 'file_not_editable' %][%|loc(u_err.file)%]%1: file not editable[%END%] - [% ELSIF u_err.msg == 'already_subscriber' %][%|loc(u_err.list)%]You are already subscribed to the list %1[%END%] - [% ELSIF u_err.msg == 'user_already_subscriber' %][%|loc(u_err.email,u_err.list)%]%1 is already subscribed to the list %2[%END%] - [% ELSIF u_err.msg == 'no_passwd' %][%|loc%]Please provide your password[%END%] - [% ELSIF u_err.msg == 'diff_passwd' %][%|loc%]The passwords you typed do not match[%END%] - [% ELSIF u_err.msg == 'wrong_input_path' %][%|loc(u_err.tpl)%]Provided path is incorrect for template '%1'[%END%] - [% ELSIF u_err.msg == 'cannot_open_file' %][%|loc(u_err.path)%]Cannot open file '%1'[%END%] - [% ELSIF u_err.msg == 'listname_needed' %][%|loc%]You need to provide list name[%END%] - [% ELSIF u_err.msg == 'already_moderated' %][%|loc%]Failed to moderate a message; it was probably moderated by another moderator[%END%] - [% ELSIF u_err.msg == 'msg_topic_missing' %][%|loc%]Tagging message is required for this list[%END%] - [% ELSIF u_err.msg == 'empty_archives' %][%|loc%]Archives are empty for this list[%END%] - [% ELSIF u_err.msg == 'didnt_change_anything' %][%|loc%]You did not select an action to perform[%END%] - [% ELSIF u_err.msg == 'no_bounce_user' %][%|loc(u_err.email)%]No bounce for user %1[%END%] - [% ELSIF u_err.msg == 'no_bounce_subscriber' %][%|loc%]List has no bouncing subscribers[%END%] - [% ELSIF u_err.msg == 'no_parameter_edited' %][%|loc%]No parameter was edited[%END%] - [% ELSIF u_err.msg == 'config_changed' %][%|loc(u_err.email)%]Config file has been modified by %1. Cannot apply your changes[%END%] - [% ELSIF u_err.msg == 'topic_other' %][%|loc%]Topic "other" is a reserved word[%END%] - [% ELSIF u_err.msg == 'mandatory_parameter' %][%|loc(u_err.p_name)%]Parameter '%1' is mandatory. Ignoring deletion.[%END%] - [% ELSIF u_err.msg == 'p_family_controlled' %][%|loc(u_err.param)%]Parameter '%1' must have values[%END%] - [% ELSIF u_err.msg == 'p_family_wrong' %][%|loc(u_err.param,u_err.val)%]Parameter '%1' has got wrong value: '%2'[%END%] - [% ELSIF u_err.msg == 'already_closed' %][%|loc(u_err.listname)%]The list '%1' is already closed[%END%] - [% ELSIF u_err.msg == 'not_closed' %][%|loc(u_err.listname)%]The list '%1' is not closed[%END%] - [% ELSIF u_err.msg == 'incorrect_listname' %][%|loc(u_err.bad_listname)%]'%1': bad listname[%END%] - [% ELSIF u_err.msg == 'list_already_exists' %][%|loc(u_err.new_listname)%]'%1' list already exists[%END%] - [% ELSIF u_err.msg == 'listname_matches_aliases' %][%|loc(u_err.new_listname)%]Incorrect listname '%1': matches one of service aliases[%END%] - [% ELSIF u_err.msg == 'failed_to_install_aliases' %][%|loc(u_err.listname)%]Failed to remove list aliases for list %1[%END%] - [% ELSIF u_err.msg == 'no_such_document' %][%|loc(u_err.path)%]%1: No such file or directory[%END%] - [% ELSIF u_err.msg == 'empty_document' %] [%|loc(u_err.path)%]Unable to read %1: empty document[%END%] - [% ELSIF u_err.msg == 'no_shared' %] [%|loc%]There is no shared documents[%END%] - [% ELSIF u_err.msg == 'shared_empty' %] [%|loc%]The shared document space is empty[%END%] - [% ELSIF u_err.msg == 'cannot_describe_shared_directory'%][%|loc%]The shared directory cannot have any description[%END%] - [% ELSIF u_err.msg == 'no_description' %] [%|loc%]No description specified[%END%] - [% ELSIF u_err.msg == 'no_doc_to_describe' %] [%|loc(u_err.path)%]Unable to describe, the document '%1' does not exist[%END%] - [% ELSIF u_err.msg == 'synchro_failed' %][%|loc%]Data has changed on disk. Cannot apply your changes[%END%] - [% ELSIF u_err.msg == 'incorrect_name' %][%|loc(u_err.name)%]%1: incorrect name[%END%][%IF u_err.reason%][%|loc%]:[%END%] [% u_err.reason %][%END%] - [% ELSIF u_err.msg == 'no_content' %][%|loc%]Failed: your content is empty[%END%] - [% ELSIF u_err.msg == 'cannot_overwrite' %] [%|loc(u_err.path)%]Cannot overwrite file %1:[%END%] [% u_err.reason %] - [% ELSIF u_err.msg == 'doc_already_a_dir' %] [%|loc(u_err.path)%]A directory named '%1' already exists:[%END%] [% u_err.reason %] - [% ELSIF u_err.msg == 'doc_already_exist' %] [%|loc(u_err.name)%]This is an already existing document: '%1'[%END%] - [% ELSIF u_err.msg == 'no_name' %][%|loc%]No name specified[%END%] - [% ELSIF u_err.msg == 'shared_full' %][%|loc%]The document repository exceed disk quota.[%END%] - [% ELSIF u_err.msg == 'cannot_upload' %] [%|loc(u_err.path)%]Cannot upload file %1:[%END%] [% u_err.reason %] - [% ELSIF u_err.msg == 'index_html' %][%|loc(u_err.dir)%]You're not authorized to upload an INDEX.HTML in %1[%END%] - [% ELSIF u_err.msg == 'no_uploaded_file' %][%|loc%]The upload failed, try it again[%END%] - [% ELSIF u_err.msg == 'directory_no_copied' %][%|loc(u_err.name,u_err.reason)%]Directory %1 and its contents could not be copied: %2[%END%] - [% ELSIF u_err.msg == 'file_no_copied' %][%|loc(u_err.name,u_err.reason)%]File %1 was not copied: %2 [%END%] - [% ELSIF u_err.msg == 'full_directory' %][%|loc(u_err.directory)%]Failed: %1 not empty[%END%] - [% ELSIF u_err.msg == 'missing_cert' %][%|loc%]No certificate for this list[%END%] - [% ELSIF u_err.msg == 'no_topic' %][%|loc%]This list has no message topic[%END%] - [% ELSIF u_err.msg == 'msg_topic_missing' %][%|loc%]Tag message with topic is required for this list[%END%] - [% ELSIF u_err.msg == 'no_entry' %][%|loc(u_err.email)%]No entry for user '%1'[%END%] - [% ELSIF u_err.msg == 'select_month' %][%|loc%]Please select archive months[%END%] - [% ELSIF u_err.msg == 'no_soap_service' %][%|loc%]No SOAP service[%END%] - [% ELSIF u_err.msg == 'auth_failed' %][%|loc%]Authentication failed[%END%] - [% ELSIF u_err.msg == 'list_not_open' %][%|loc(u_err.status)%]Service unavailable because list status is '%1'[%END%] - [% ELSIF u_err.msg == 'template_exists' %][%|loc(u_err.argument)%]This Template '%1' already exists[%END%] - [% ELSIF u_err.msg == 'cannot_delete' %][%|loc(u_err.file_del)%]Cannot delete this file '%1'[%END%] - [% ELSIF u_err.msg == 'invalid_filename' %][%|loc(u_err.filename)%]Invalid filename: '%1'[%END%] - [% ELSIF u_err.msg == 'change_member_email_failed_included' %][%|loc(u_err.listname)%]Failed to update member email in list '%1', list owner has been notified.[%END%] - [% ELSIF u_err.msg == 'change_admin_email_failed_included' %][%|loc(u_err.listname)%]Failed to update admin email in list '%1', list owner has been notified.[%END%] - [% ELSIF u_err.msg %][%u_err.msg%] - [% END %] - -[% END %] -[%#####################-%] -[%# AUTHORIZATION ERROR-%] -[%#####################-%] -[% FOREACH auth = auth_rejects %] -[%|loc(auth.action)%]AUTHORIZATION REJECT (%1)[%END-%] - [% IF auth.change_email_failed %][%|loc(auth.listname)%]Could not change your subscription address for the list '%1' - because your new address is not allowed to subscribe/unsubscribe:[%END%][% END %] - [% SET reason = auth.msg -%] - [% IF reason == 'edit_right' %][% SET role = auth.role -%][% SET right = auth.right -%][% END -%] - [% PROCESS authorization_reject.tt2 -%] - [% IF auth.login %]<br />[%|loc%]You need to login[%END%][% END %] - -[% END %] - -<form > -<fieldset> -<input class="MainMenuLinks" type="button" value="OK" onclick="hideError();"> - -</fieldset> -</form> - -</div> - -<!-- end error.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/footer.tt2 b/sympa-6.1.20-src/web_tt2/footer.tt2 deleted file mode 100644 index 09f8154e53b0241b96d0ee45529fd1682d1b1fb6..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/footer.tt2 +++ /dev/null @@ -1,12 +0,0 @@ -<!-- $Id: footer.tt2 8454 2013-01-18 16:08:17Z sympa-authors $ --> -<div class="clearfooter"> </div> - -<div id="Footer"> - -<img src="[% icons_url %]/favicon_sympa.png" width="20px" height="20px"/> - -<a href="http://www.sympa.org"> Powered by Sympa </a> - - -</div> -<!-- end footer.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/get_closed_lists.tt2 b/sympa-6.1.20-src/web_tt2/get_closed_lists.tt2 deleted file mode 100644 index eb68c0981ab2c011689b4cf4c66c07f496d524b1..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/get_closed_lists.tt2 +++ /dev/null @@ -1,35 +0,0 @@ -<!-- $Id: get_closed_lists.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<div class="block"> -<form name="myform" action="[% path_cgi %]" method="post"> -<fieldset> -<strong>[%|loc%]Closed lists[%END%]</strong> -<table summary="[%|loc%]Closed lists[%END%]" class="table_style"> - <tr class="color_light"> - <th><a href="#" onclick="toggle_selection(document.myform.selected_lists);return false;" title="[%|loc%]Toggle Selection[%END%]">«»</a></th> - <th>[%|loc%]list name[%END%]</th> - <th>[%|loc%]list subject[%END%]</th> - <th>[%|loc%]Requested by[%END%]</th> - </tr> - -[% FOREACH list = closed %] -[% IF dark == '1' %] - <tr>[% SET dark = 0 %] -[% ELSE %] - <tr class="color0">[% SET dark = 1 %] -[% END %] - -<td><input type="checkbox" name="selected_lists" value="[% list.key %]" /></td> -<td><a href="[% path_cgi %]/admin/[% list.key %]">[% list.key %]</a></td> -<td>[% list.value.subject %]</td> -<td>[% list.value.by %]</td> -</tr> -[% END %] -</table> -<input class="MainMenuLinks" type="button" value="[%|loc%]Toggle Selection[%END%]" onclick="toggle_selection(document.myform.selected_lists)" /> -<input class="MainMenuLinks" type="submit" name="action_purge_list" value="[%|loc%]Purge selected lists[%END%]" /> -</fieldset> -</form> -</div> - -<!-- end get_closed_lists.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/get_latest_lists.tt2 b/sympa-6.1.20-src/web_tt2/get_latest_lists.tt2 deleted file mode 100644 index 199c38434543c26a2741872a4716c02ef0a58f34..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/get_latest_lists.tt2 +++ /dev/null @@ -1,25 +0,0 @@ -<!-- $Id: get_latest_lists.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<div class="block"> -<table summary="[%|loc%]Latests Lists[%END%]" class="table_style"> - <tr class="color_light"> - <th>[%|loc%]Creation date[%END%]</th> - <th>[%|loc%]Listname[%END%]</th> - <th>[%|loc%]Subject[%END%]</th> - </tr> - -[% FOREACH list = latest_lists %] -[% IF dark == '1' %] - <tr>[% SET dark = 0 %] -[% ELSE %] - <tr class="color0">[% SET dark = 1 %] -[% END %] -<td>[% list.creation_date %]</td> -<td><a href="[% path_cgi %]/admin/[% list.name %]">[% list.name %]</a></td> -<td>[% list.subject %]</td> -</tr> -[% END %] -</table> -</div> - -<!-- end get_latest_lists.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/get_pending_lists.tt2 b/sympa-6.1.20-src/web_tt2/get_pending_lists.tt2 deleted file mode 100644 index be76cbd36cb1cc4805b85d90d5f4cb7b036d3ddc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/get_pending_lists.tt2 +++ /dev/null @@ -1,33 +0,0 @@ -<!-- $Id: get_pending_lists.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<div class="block"> -<form action="[% path_cgi %]" method="post"> -<fieldset> -<strong>[%|loc%]Pending lists[%END%]</strong> -<table summary="[%|loc%]Pending lists[%END%]" class="table_style"> - <tr class="color_light"> - <th>[%|loc%]list name[%END%]</th> - <th>[%|loc%]list subject[%END%]</th> - <th>[%|loc%]Requested by[%END%]</th> - <th>[%|loc%]Requested date[%END%]</th> - </tr> - -[% FOREACH list = pending %] -[% IF dark == '1' %] - <tr>[% SET dark = 0 %] -[% ELSE %] - <tr class="color0">[% SET dark = 1 %] -[% END %] - -<td><a href="[% path_cgi %]/set_pending_list_request/[% list.key %]">[% list.key %]</a></td> -<td>[% list.value.subject %]</td> -<td>[% list.value.by %]</td> -<td>[% list.value.date %]</td> -</tr> -[% END %] -</table> -</fieldset> -</form> -</div> - -<!-- end get_pending_lists.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help.tt2 b/sympa-6.1.20-src/web_tt2/help.tt2 deleted file mode 100644 index 66d23db988df9acebcec778b129ed876c5390155..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help.tt2 +++ /dev/null @@ -1,27 +0,0 @@ -<!-- $Id: help.tt2 5675 2009-04-28 13:59:12Z david.verdin $ --> - -<div class="block"> - -[% IF help_topic %] - [% PROCESS "help_${help_topic}.tt2" IF help_topic %] -<br /> -[% ELSE %] - - -<h2>[%|helploc%]Subscriber, moderator and owner documentation[%END%]</h2> - - <p>[%|helploc%]In this documentation, you will find:[%END%]</p> - <ul> - <li>[%|helploc(path_cgi)%]a <a href="%1/help/introduction">general introduction</a> to mailing lists;[%END%]</li> - <li>[%|helploc(path_cgi)%]a <a href="%1/help/user">user guide</a> about the use of Sympa;[%END%]</li> - <li>[%|helploc(path_cgi)%]an <a href="%1/help/admin">administrator guide</a> about the use of Sympa.[%END%]</li> - </ul> - -<p>[%|helploc(path_cgi)%]If you want to perform a particular task, take a look at the list of all <a href="%1/help/introduction#features">available features</a> in the mailing list management software Sympa.[%END%]<br /> -[%|helploc(path_cgi)%]If you experience any problem, please refer to the <a href="%1/help/faquser">users <acronym title="Frequently asked questions">FAQ</acronym></a> or to the <a href="%1/help/faqadmin">administrators <acronym title="Frequently asked questions">FAQ</acronym></a>.[%END%]</p> - -[% END %] - -</div> - -<!-- end help.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_admin.tt2 b/sympa-6.1.20-src/web_tt2/help_admin.tt2 deleted file mode 100644 index 8ea7fbca773f6fd9c9ff2230de529be2341e383e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_admin.tt2 +++ /dev/null @@ -1,259 +0,0 @@ -<!-- $Id: help_admin.tt2 7490 2012-07-19 10:07:15Z sikeda $ --> - - <h2 class="block"><a name="docadmin"></a>[%|helploc%]Mailing lists - Owner and moderator guide[%END%]</h2> - - <h3>[%|helploc%]Introduction: who is in charge of managing mailing lists?[%END%]</h3> - <p>[%|helploc%]Reminder: a mailing list service involves four types of roles:[%END%]</p> - <ul> - <li><strong>[%|helploc%]listmaster;[%END%]</strong></li> - <li><strong>[%|helploc%]owner;[%END%]</strong></li> - <li><strong>[%|helploc%]moderator;[%END%]</strong></li> - <li><strong>[%|helploc%]subscriber.[%END%]</strong></li> - </ul> - <p>[%|helploc(path_cgi)%]Refer to the <a href="%1/help/introduction#roles">description of each role</a> to know more about this.[%END%]</p> - - <h3><a name="create_list"></a>[%|helploc%]Requesting the creation of a mailing list[%END%]</h3> - <p>[%|helploc%]The <strong>list creation request</strong> can be <strong>subject to conditions</strong>. Even though you meet those conditions, the <strong>list creation</strong> will nevertheless be <strong>subject to approval by the listmasters</strong>.[%END%]</p> - <p>[%|helploc%]To request the creation of a mailing list, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi,conf.host)%]Go to the <strong><a href="%1/home">list environment homepage</a></strong> and <a href="%1/help/user#sympa_auth"><strong>log on</strong></a>.[%END%]</li> - <li>[%|helploc%]In the top menu, <strong>click on the 'Create list' link</strong>.[%END%]<br/> - <span class="retraitita">[%|helploc%]If this link does not display, it means that you do not have the privileges required to create a list.[%END%]</span></li> - <li>[%|helploc(conf.host)%]Give your list a <strong>name</strong> (only enter the name without the '@' and the domain name; example: <em class="example">languages_spanish</em> and not <em class="example">languages_spanish@%2</em>).[%END%]<br /> - <span class="retraitita">[%|helploc%]Do not use any spaces, accents or specials characters in list names: those characters might cause problems.[%END%]</span> - <span class="retraitita">[%|helploc%]Choose an explicit yet short name: think of the subscribers who will have to type this name every time they will send a message to the list! If you manage a set of lists, you can prefix your lists' names with a common prefix; thus they will be sorted together and will be easily recognizable (example: <em class="example">xx-users@%2, xx-hotline@%2</em>, etc.).[%END%]</span></li> - <li>[%|helploc%]Choose a <strong>list type</strong> among the predefined types (the predefined types are only examples of typical configurations that can be changed by the list owners after creation; it is even possible to configure the list beyond the options offered in the list administration module, by asking the listmasters).[%END%]</li> - <li>[%|helploc%]Enter a <strong>subject</strong> for your list. This subject will display as a header for all the list pages, and will also be visible on list index pages (list of lists, list of your subscriptions, etc.) and in the browser title bar.[%END%]<br /> - - <li>[%|helploc%]Choose a <strong>topic</strong> in the 'Topics' drop-menu.[%END%]<br /> - <p class="retraitita">[%|helploc%]If no topic suits your needs, you can request the creation of a new topic by asking the listmasters.[%END%]</p></li> - <li>[%|helploc%]Enter a <strong>description</strong> for your list. This description will display on the list information page and in the 'Subscribers Charter' sent by email to each new subscriber, under the 'List subject' heading. This description may involve explanations about the following issues:[%END%] - <ul> - <li>[%|helploc%]object of the list and targets;[%END%]</li> - <li>[%|helploc%]topics discussed;[%END%]</li> - <li>[%|helploc%]operation of the list (liabilities, status of the list, etc.);[%END%]</li> - <li>[%|helploc%]rules applying;[%END%]</li> - <li>[%|helploc%]description of the typical subscribers (their occupations, the projects they manage, their nationalities, etc.).[%END%]</li> - </ul> - <p class="retraitita">[%|helploc%]You can format your list description with <acronym lang="en" xml:lang="en" title="HyperText Markup Language">HTML</acronym> tags. Be careful: if your description is long, cut it with manual line breaks (ENTER key of your keyboard); otherwise, it might not be entirely visible in your browser window.[%END%]</p> - - <li>[%|helploc%]Click on the '<strong>Submit your creation request</strong>' button.[%END%]</li> - </ol> - - <p>[%|helploc%]A message displays to inform you that your list creation request has been sent to the listmasters and that from now on, you can modify the list by clicking on the 'Admin' button. However, the message warns you that the list will be actually installed and made visible on the server only after approval by a listmaster.[%END%]</p> - <p>[%|helploc%]After this, you will have to <strong>wait for the list creation to be approved of by one of the listmasters</strong>. Then you will receive a notice message entitled '<strong>Creation of the nameofthelist list</strong>', informing you that your list was actually created.[%END%]</p> - <p>[%|helploc%]<strong>Last, subscribe to your list</strong>: creating a list or becoming its owner or moderator does not mean that you are automatically subscribed to it![%END%]</p> - - <h3>[%|helploc%]Managing a list[%END%]</h3> - - <p>[%|helploc%]To manage a list you own, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the <strong>list environment homepage</strong> and <strong><a href="%1/help/user#sympa_auth">log on</a></strong>.[%END%]<br /> - <p class="retraitita">[%|helploc%]If you are subscribed to the list with several addresses, use the address with which you requested the list creation.[%END%]</p></li> - <li><strong>[%|helploc%]Go to the information page of the list</strong> you want to manage.[%END%]</li> - <li>[%|helploc%]In the left menu, <strong>click on the 'Admin' link</strong>.[%END%]</li> - </ol> - - <p>[%|helploc%]To browse the sections of the administration module, click on the links below the 'Admin' link, in the left menu.[%END%]</p> - <p>[%|helploc%]Those different sections allow you to:[%END%]</p> - <ul> - <li>[%|helploc(path_cgi)%]<a href="%1/help/listconfig">configure the list</a>;[%END%]</li> - <li>[%|helploc%]<a href="#customize">customize files related to the list</a>;[%END%]</li> - <li>[%|helploc%]<a href="#manage_members">manage subscribers</a>;[%END%]</li> - <li>[%|helploc%]<a href="#manage_archives">manage the message archive of the list</a>;[%END%]</li> - <li>[%|helploc%]<a href="#manage_bounces">manage bounces</a>;[%END%]</li> - <li>[%|helploc%]<a href="#manage_shared">create, delete or restore the shared document web space</a>;[%END%]</li> - <li>[%|helploc%]<a href="#renamelist">rename the list</a>;[%END%]</li> - <li>[%|helploc%]<a href="#supprlist">delete the list</a>.[%END%]</li> - </ul> - - <p>[%|helploc%]The options available in the 'Moderate' submenu allow you to:[%END%] - <ul> - <li>[%|helploc%]<a href="#moderate">moderate messages</a> sent to the list;[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/shared">moderate documents</a> available in the shared document web space;[%END%]</li> - <li>[%|helploc%]<a href="#manage_members">moderate pending subscriptions</a>.[%END%]</li> - </ul> - - <h4><a name="edit_list"></a>[%|helploc%]Configuring the list[%END%]</h4> - <p>[%|helploc(path_cgi)%]To learn how to configure the list, please refer to the <a href="%1/help/listconfig"><strong>documentation about list configuration</strong></a>.[%END%]</p> - - <h4><a name="customize"></a>[%|helploc%]Customizing the list[%END%]</h4> - <p>[%|helploc%]From this page, you can <strong>edit a number of files relating to your list</strong>, among which:[%END%]</p> - <ul> - <li>[%|helploc%]typical messages sent to subscribers in particular occasions:[%END%] - <ul> - <li>[%|helploc%]<strong>welcome message</strong>: this message is the notice sent to people who just subscribed. You should write a charter for your list and add it in this welcome message. You can create a structured <acronym lang="en" xml:lang="en" title="Multipurpose Internet Mail Extensions">MIME</acronym> message (reserved to the <acronym lang="en" xml:lang="en" title="Multipurpose Internet Mail Extensions">MIME</acronym> format experts);[%END%]</li> - <li>[%|helploc%]<strong>unsubscribe message</strong>: this message is sent to people unsubscribing from the list;[%END%]</li> - <li>[%|helploc%]<strong>deletion message</strong>: this message is sent to people you unsubscribe from the list (DEL command), especially because their address caused bounces;[%END%]</li> - <li>[%|helploc%]<strong>remind message</strong>: this message is sent to subscribers as a personalized reminder when using the REMIND command. This command is essential to the good management of your list since many bounces are due to people whose current address is not their subscription address anymore, or even who forgot that they were subscribed to the list;[%END%]</li> - <li>[%|helploc%]<strong>subscribing invitation message</strong>: this message is sent to people you invite to subscribe to the list using the INVITE command;[%END%]</li> - <li>[%|helploc%]<strong>notice of message rejected by the moderator</strong>: this message is sent to the sender of a message rejected by the moderator;[%END%]</li> - <li>[%|helploc%]<strong>notice of message rejected because of a virus</strong>: this message is sent to the sender of a message in which a virus was found.[%END%]</li> - </ul></li> - - <li>[%|helploc%]miscellaneous files:[%END%] - <ul> - <li>[%|helploc%]<strong>list description</strong>: the list description is sent by email in return to the INFO command. By default, it is also included in the welcome message (subscription notice). It is not the same as the list presentation page displayed on the mailing list web interface;[%END%]</li> - <li>[%|helploc%]<strong>list homepage</strong>: this description is available on the information page of the list. It can be in <acronym lang="en" xml:lang="en" title="HyperText Markup Language">HTML</acronym> format. Even though you do not use this format, use <code><br /></code> tags to indicate line breaks;[%END%]</li> - <li>[%|helploc%]<strong>message header</strong>: when available, it is added as a <acronym lang="en" xml:lang="en" title="Multipurpose Internet Mail Extensions">MIME</acronym> attachment at the beginning of each message distributed to the list;[%END%]</li> - <li>[%|helploc%]<strong>message footer</strong>: when available, it is added as a <acronym lang="en" xml:lang="en" title="Multipurpose Internet Mail Extensions">MIME</acronym> attachment at the end of each message distributed to the list.[%END%]</li> - </ul> - </li> - </ul> - <p>[%|helploc%]By default, Sympa uses default files; in this case, the specific files corresponding to your list are empty. <strong>To edit a file, choose it from the drop-down list and click on the 'Edit' button</strong>. You will have the possibility to change the <strong>'From' field</strong> (sender), the <strong>'Subject' field</strong> (subject line) and the <strong>message body</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: the values between square brackets are variables. Do not change them, unless you really know what you are doing...[%END%]</p> - - - <h4><a name="manage_shared"></a>[%|helploc%]Managing the shared document web space[%END%]</h4> - <p>[%|helploc%]By default, lists have no shared document web space. Thus, you need to create it. To do that, go to the <strong>list administration module</strong> and click on the '<strong>Create shared</strong>' link.[%END%]</p> - - <p>[%|helploc(path_cgi)%]To allow subscribers to publish documents in the shared document web space, you need to <strong>change default rights</strong>: in the list administration module, click on '<strong>Edit list config</strong>' and then on '<strong>Privileges</strong>'. At the bottom of the page, there is a drop-down list entitled '<a href="%1/help/listconfig#docsrights"><strong>Who can edit</strong></a>'; choose the '<strong>Restricted to subscribers (private)</strong>' option.[%END%]</p> - <p class="retraitita">[%|helploc(path_cgi)%]Be careful: if you created folders before changing those rights, the folders will still be unwritable. If you want to make them writable, you will have to <a href="%1/help/shared#acces">change access rights</a> for each folder.[%END%]</p> - <p>[%|helploc(path_cgi)%]You might also want to <a href="%1/help/listconfig#docsrights">set up <strong>quotas</strong></a> for the shared document web space on the 'Privileges' page of the 'Edit list config' section.[%END%]</p> - - <p>[%|helploc(path_cgi)%]To <strong>know everything about the management of the shared document web space</strong> (how to organize it, change access rights, name documents, etc.), refer to the '<a href="%1/help/shared">Using the shared document web space</a>' section of the User guide.[%END%]</p> - <p>[%|helploc%]To <strong>deny access to the shared document web space</strong>, click on '<strong>Delete shared</strong>' in the 'Admin' submenu. Then you will still have the possibility to <strong>reopen it</strong> by clicking on '<strong>Restore shared</strong>'. Deleting and restoring the shared document web space has <strong>no impact on the documents it contains</strong>.[%END%]</p> - - <h4><a name="manage_members"></a>[%|helploc%]Managing subscribers[%END%]</h4> - - <p>[%|helploc%]This section lets you browse the <strong>list of all the list subscribers</strong>. For each subscriber, the following information is available:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>email address</strong>;[%END%]</li> - <li>[%|helploc%]<strong>domain</strong> of the email address (<em class="example">@cru.fr</em>, <em class="example">@sympa.org</em>, <em class="example">@fai.com</em>, etc.);[%END%]</li> - <li>[%|helploc%]<strong>picture</strong> (if that feature was activated for the list);[%END%]</li> - <li>[%|helploc%]<strong>name</strong> (according to the subscription method, it is not always displayed);[%END%]</li> - <li>[%|helploc%]<a href="#deliverymode"><strong>message delivery mode</strong></a>;[%END%]</li> - <li>[%|helploc%]<strong>data source</strong> indicating the origin in case the subscriber is included in the list and not directly subscribed;[%END%]</li> - <li>[%|helploc%]<strong>date of subscription</strong> to the list;[%END%]</li> - <li>[%|helploc%]<strong>latest update</strong> of the subscriber options.[%END%]</li> - </ul> - - <p class="retraitita">[%|helploc%]By default, each page displays 25 subscribers. You can browse through the pages by using the browsing arrows or display more subscribers on each page. You may also wish to sort subscribers according to different criteria by clicking on the corresponding column header.[%END%]</p> - <p>[%|helploc%]To <strong>search a subscriber</strong>, enter all or part of his/her email address or name in the input field and click on the '<strong>Search</strong>' button.[%END%]</p> - <p>[%|helploc%]You can <strong>subscribe other people to the list</strong> from this page:[%END%]</p> - <ul> - <li>[%|helploc%]To add <strong>a single person</strong>, enter his/her email address in the input field and click on the '<strong>Add</strong>' button.[%END%]</li> - <li>[%|helploc%]To add <strong>several persons</strong>, click on the '<strong>Multiple add</strong>' button. In the input field that displays, enter the email addresses and names of the people you want to subscribe to the list and click on '<strong>Add subscribers</strong>'.[%END%]</li> - </ul> - - - <p class="retraitita">[%|helploc%]If you want to subscribe people without letting them know through a notice, tick the 'Quiet' box. However, it is far better to warn people that you subscribe them![%END%]</p> - <p>[%|helploc(conf.email,conf.host)%]Even though you have the possibility to subscribe people to your mailing lists, it is always <strong>much better that people take the necessary steps to subscribe themselves</strong> to the list. You can also <strong>invite people to subscribe to the list</strong> through the INVITE command: send an email to %1@%2 and type the following command in the message body: <strong>invite nameofthelist emailaddress</strong> (example: <em class="example">invite list_example john.doe(@)fai.com</em>).[%END%]</p> - <p>[%|helploc%]To <strong>accept or reject the subscription requests to the list</strong>, click on '<strong>Pending subscriptions</strong>'. The list of all people who requested subscription to the list displays. To accept or reject a request, tick the box in front of a person's name and click on the button of your choice.[%END%]</p> - <p>[%|helploc%]To <strong>send a subscription reminder to all subscribers</strong>, click on the '<strong>Remind all</strong>' button. The subscription reminder message contains:[%END%]</p> - <ul> - <li>[%|helploc%]the <strong>name of the list</strong> to which the subscriber is subscribed;[%END%]</li> - <li>[%|helploc%]the <strong>email address</strong> with which the subscriber is subscribed;[%END%]</li> - <li>[%|helploc%]the subscriber's <strong>list password</strong>;[%END%]</li> - <li>[%|helploc%]a <strong>link to the information page</strong> of the list;[%END%]</li> - <li>[%|helploc%]a <strong>clickable address in order to allow subscribers to unsubscribe</strong> from the list.[%END%]</li> - </ul> - <p class="retraitita">[%|helploc(path_cgi)%]You can also configure an automatic subscription reminder through the '<a href="%1/help/listconfig#other">Miscellaneous</a>' page of the 'Edit list config' section.[%END%]</p> - - - <p>[%|helploc%]To <strong>unsubscribe subscribers</strong> from this page, select them by ticking the boxes in front of their names and click on the '<strong>Delete selected email addresses</strong>' button.[%END%]</p> - <p class="retraitita">[%|helploc%]If you do not want to notify the subscribers, tick the 'Quiet' box. However, this is not advisable, except in the case of bouncing subscribers.[%END%]</p> - - <p class="retraitita">[%|helploc%]Tip: to select all subscribers at once, first make sure that they are all displayed on the page, and then click on the 'Toggle selection' button: all subscribers will be selected in a single click![%END%]</p> - - <p>[%|helploc%]To <strong>change a subscriber's subscriber options</strong>, click on his/her email address.[%END%]</p> - <p>[%|helploc%]From this page, you can <strong>change the name, email address and message delivery mode of the subscriber</strong>. You can also <strong>unsubscribe him/her</strong>.[%END%]</p> - - <p>[%|helploc%]If the subscriber is <a href="#manage_bounces">bouncing</a>, another form displays under the 'Subscriber information' form:[%END%]</p> - <p>[%|helploc%]The information displayed involves:[%END%]</p> - <ul> - <li>[%|helploc%]the type of error (in English);[%END%]</li> - <li>[%|helploc%]the number or errors;[%END%]</li> - <li>[%|helploc%]the period during which errors occurred.[%END%]</li> - </ul> - <p>[%|helploc(path_cgi)%]You can <strong>check the latest error</strong> or <strong>reset errors</strong>. If you reset errors, the subscriber's <a href="%1/help/listconfig#bouncers">score</a> will be reset to zero.[%END%]</p> - - <p>[%|helploc%]To manage bouncing addresses more easily, go to the '<a href="#manage_bounces">Bounces</a>' page of the list administration module.[%END%]</p> - - - <h4><a name="manage_bounces"></a>[%|helploc%]Managing bounces[%END%]</h4> - <p>[%|helploc%]When there is a <strong>problem with subscribers' email addresses</strong> (obsolete email addresses, addresses temporarily unavailable when messages were sent, inbox quota exceeded, etc.), the percentage of bouncing addresses displays in the left menu under the text '<strong>Error rate</strong>'. To check the bouncing addresses, go to the '<strong>Bounces</strong>' page of the list administration module.[%END%]</p> - <p>[%|helploc%]The Sympa software automatically manages bouncing subscribers: according to the number of errors and to the traffic on the list, bouncing subscribers are either notified, unsubscribed, or their score is reset to zero when their address stops bouncing.[%END%]</p> - <p>[%|helploc%]To <strong>make addresses stop bouncing</strong>, select them by ticking their boxes and click on the '<strong>Reset errors for selected users</strong>' button. If the error remains, the addresses will be reported as bouncing again as soon as a message is posted on the list.[%END%]</p> - <p>[%|helploc%]You can also <strong>unsubscribe subscribers whose addresses are still bouncing</strong>: too many bouncing addresses cause a considerable load on the mailing list server. To unsubscribe subscribers, select them by ticking the boxes in front of their names and click on the '<strong>Delete selected email addresses</strong>' button.[%END%]</p> - <p class="retraitita">[%|helploc%]Tip: to select all subscribers at once, first make sure that they are all displayed on the page, and then click on the 'Toggle selection' button: all subscribers will be selected in a single click![%END%]</p> - - <h4><a name="moderate"></a>[%|helploc%]Moderating messages sent to the list[%END%]</h4> - <p>[%|helploc%]When a list is moderated, <strong>all messages have to be approved of by one of the moderators before being distributed to the list</strong>. After sending a message to a list, subscribers are automatically notified by email that their message will be moderated. As for moderators, they also receive a notice message from Sympa, which includes the message to moderate.[%END%]</p> - - <p>[%|helploc%]You can <strong>perform moderating tasks</strong> either <strong>by email</strong>, by answering the messages received from Sympa, or <strong>through the mailing list web interface</strong>. To do that, click on the '<strong>Message</strong>' link in the 'Moderate' submenu: you are brought to a page that displays all messages to be moderated (the most recent messages are on top of page). <strong>To read a message, click on its subject</strong>.[%END%]</p> - - <p>[%|helploc%]You have <strong>two options</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>authorize the message distribution</strong> on the list;[%END%]</li> - <li>[%|helploc%]<strong>reject the message and notify sender</strong>: when you reject a message, it is better to notify its sender...[%END%]<br /> - </ul> - <p>[%|helploc%]All moderators can decide to distribute a message or not. However, <strong>the first moderator to process the message will carry the day</strong>. You will be notified by Sympa if you try to process a message that has already been moderated. When there are several moderators, it is <strong>easier to moderate messages from the mailing list web interface</strong>: thus, you will be able to view all messages remaining to be moderated.[%END%]</p> - <p class="retraitita">[%|helploc%]<strong>Whatever the date and time of moderation, the date and time of sending of the message do not change</strong>. Thus, if the distribution of the message is allowed with a lot of delay, it is possible to receive a message dated January 1st on December 31st![%END%]</p> - <p>[%|helploc%]In case the message was rejected with a notice, the subscriber who had sent it is notified by email. You can <a href="#customize">customize the message he/she gets</a>.[%END%]</p> - - <p>[%|helploc%]Checking the '<strong>Reject without notification</strong>' checkbox allows you to prevent the message author from receiving a notification.[%END%]</p> - - <p>[%|helploc%]Checking the '<strong>Add to blacklist</strong>' checkbox both skip the rejection notification and adds the message author to the list own blacklist. You can manage the blacklist via the '<strong>edit blacklist</strong>' button at the bottom of the page.[%END%]</p> - - <p>[%|helploc%]If you wish to customize the rejection message that is sent to a message author, you can do so via the '<strong>Manage rejection messages</strong>' button. The message management page will let define a set of rejection messages and define the default one.[%END%]</p> - - <p>[%|helploc(path_cgi)%]<strong>Reminder</strong>: you can <a href="%1/help/listconfig#description">add or remove moderators</a> through the list administration module. To do that, from the list information page, click on '<strong>Admin</strong>', on '<strong>Edit list config</strong>', and then on '<strong>List definition</strong>'.[%END%]</p> - <p>[%|helploc(path_cgi)%]It is also possible to <strong>process messages after their distribution on the list</strong>; this can be useful when a list is not moderated. If you want to <strong>delete a message</strong>, <a href="%1/help/arc#arcsearch">search for it in the online message archive</a> and click on the '<strong>Tag this mail for deletion</strong>' button in the upper right corner of the message. A confirmation message displays; click on 'OK'. The message will be deleted after a few seconds. <strong>Be careful: this operation is irreversible!!! If you delete a message, you will not be able to retrieve it.</strong>[%END%]</p> - - - <h4><a name="manage_archives"></a>[%|helploc%]Managing the message archive[%END%]</h4> - <p>[%|helploc%]The mailing list management robot Sympa can generate <strong>downloadable compressed archives (.ZIP format) of the messages sent to the list</strong>. To download those archives, <strong>select the months</strong> that interest you in the list and click on the '<strong>Download Zip file</strong>' button.[%END%]</p> - <p class="retraitita">[%|helploc%]Tip: in the 'Archive selection' list, to select all months during which messages have been sent, click on the first month, hold down the SHIFT key and click on the last month of the list.[%END%]</p> - <p>[%|helploc%]You will receive a file of the type '<strong>nameofthelist_archive.zip</strong>' containing <strong>folders named 'nameofthelist_year-month'</strong> (example: <em class="example">list_example_2005-06</em>) for each month. Inside each folder, <strong>the file names are numbers</strong> representing their position in the chronology of the messages sent (example: the file named '1' contains the first message sent in the month). The message files have <strong>no extension</strong>; use the text editor of your choice (Notepad, WordPad, Vim, etc.) to open them. <strong>Each file represents an entire message (full header)</strong>.[%END%]</p> - <p>[%|helploc%]From the 'Manage archive' page, you can also <strong>delete messages</strong> (deletion month by month and not message by message). To do that, <strong>select the months</strong> that interest you in the list and click on the '<strong>Delete selected months</strong>' button.[%END%]</p> - <p class="retraitita">[%|helploc%]<strong>Be careful: this operation is irreversible!!! When you click on 'Delete selected months', keep in mind that you are not only deleting an archive file, but also the entire message archive of the selected month!!!</strong>[%END%]</p> - - - <h4><a name="renamelist"></a>[%|helploc%]Renaming the list[%END%]</h4> - <p>[%|helploc%]In the <strong>list administration module</strong>, click on '<strong>Rename list</strong>'. Enter the name of your choice and click on the 'Rename this list' button. A confirmation message displays; click on 'OK'.[%END%]</p> - <p class="retraitita">[%|helploc%]If you change your mind, you will only have to redo the inverse operation in order to retrieve the former list name.[%END%]</p> - <p><strong>[%|helploc%]Be careful: when you rename a list, you have to let the listmasters know; otherwise, the change will not be effective</strong>.[%END%]</p> - <p>[%|helploc%]A few tips to name your lists:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>Do not use any spaces, accents or specials characters</strong> in list names: those characters might cause problems.[%END%]</li> - <li>[%|helploc%]Choose an <strong>explicit yet short name</strong>: think of the subscribers who will have to type this name every time they will send a message to the list![%END%]</li> - <li>[%|helploc(conf.host)%]If you manage a set of lists, you can <strong>prefix your lists' names with a common prefix</strong>; thus they will be sorted together and will be easily recognizable (example: <em class="example">xx-users@%1, xx-hotline@%1.fr</em>, etc.).[%END%]</li> - </ul> - - - <h4><a name="supprlist"></a>[%|helploc%]Deleting the list[%END%]</h4> - <p>[%|helploc%]In the <strong>list administration module</strong>, click on '<strong>Remove list</strong>'. A confirmation message displays; click on 'OK'.[%END%]</p> - <p class="retraitita">[%|helploc%]<strong>Be careful: if you delete the list, you will not be able to reopen it yourself!!! If you want to reopen the list, you will have to ask the listmasters.</strong>[%END%]</p> - - <p>[%|helploc%]In real terms, what are the <strong>consequences</strong> of a list deletion?[%END%]</p> - <ul> - <li>[%|helploc%]<strong>All subscribers are immediately unsubscribed</strong> automatically (including owners and moderators).[%END%]</li> - <li>[%|helploc%]<strong>The message archive is preserved</strong> but no one can access it anymore.[%END%]</li> - <li>[%|helploc%]<strong>The documents published in the shared document web space are preserved</strong> but no one can access them anymore.[%END%]</li> - <li>[%|helploc%]<strong>Only the listmasters have the power to reopen the list</strong>; if they do, the former list subscribers will automatically be subscribed again.[%END%]</li> - </ul> - <p class="retraitita">[%|helploc%]Be careful: due to a slight latency, the list pages remain accessible for a while if you know their addresses. Then they will become fully unavailable.[%END%]</p> - - <p>[%|helploc%]<strong>If you want the list and all the associated files to be deleted permanently</strong>, you will have to ask the listmasters.[%END%]</p> - - <h3><a name="rulesadmin"></a>[%|helploc%]Good practices[%END%]</h3> - <p>[%|helploc%]In order to have dynamic lists, <strong>you must be deeply involved</strong> in their exchanges: if a list is neither controlled nor enlivened by its owners, it may result in a loss of quality in its messages and it might even end up vanishing...[%END%]</p> - <p>[%|helploc%]<strong>The use of email in general and for mailing lists is bound by a set of precise rules necessary to share pleasant exchanges: the "Netiquette"</strong>. As a list owner or moderator, it is your role to have subscribers respect it. You will find the general principles of the Netiquette, as well as many links on the <a target="_blank" href="http://en.wikipedia.org/wiki/Netiquette">page of the Wikipedia dedicated to the Netiquette</a>.[%END%]</p> - <p><a name="charter"></a>[%|helploc%]You should <strong>write a charter for your list</strong> to define all the rules that apply to its use:[%END%]</p> - <ul> - <li>[%|helploc%]allowed, tolerated and forbidden topics;[%END%]</li> - <li>[%|helploc%]writing rules (for example to specify the languages in which the subscribers are to post, to ban "<acronym lang="en" xml:lang="en" title="Short Message Service">SMS</acronym> language", etc.);[%END%]</li> - <li>[%|helploc%]rules applying when sending messages (frequency, attachments, etc.);[%END%]</li> - <li>[%|helploc%]liabilities of subscribers regarding the netiquette;[%END%]</li> - <li>[%|helploc%]rights and responsibilities of the subscribers;[%END%]</li> - <li>[%|helploc%]information about retention of the messages sent to the list;[%END%]</li> - <li>[%|helploc%]legal information and privacy policy;[%END%]</li> - <li>[%|helploc%]sanctions applying to those who would not respect the list charter;[%END%]</li> - <li>[%|helploc%]etc.[%END%]</li> - </ul> - - <p class="retraitita">[%|helploc%]In order to have all subscribers read the list charter, you should include it in the welcome message they get after subscribing. To do that, you need to <a href="#customize">customize that message</a> through the 'Customize' page of the list administration module.[%END%]</p> - <p>[%|helploc%]When available, the 'Owner and moderator charter' provides list owners and moderators with all the necessary information to carry out their roles. This Charter involves all the rights and responsibilities of owners and moderators.[%END%]</p> - <hr /> -<!-- end help_admin.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_arc.tt2 b/sympa-6.1.20-src/web_tt2/help_arc.tt2 deleted file mode 100644 index ea96452c1ef70c41b71c5211c44bf3a9f97e9aac..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_arc.tt2 +++ /dev/null @@ -1,120 +0,0 @@ -<!-- $Id: help_arc.tt2 9969 2013-11-29 13:49:13Z sikeda $ --> - -<h3 class="block"><a name="archives"></a>[%|helploc%]Reading the list archive online[%END%]</h3> - <p><strong>[%|helploc%]To read the messages sent to a list</strong>, you have two options:[%END%]</p> - <ul> - <li>[%|helploc%]read the messages you receive <strong>in your email inbox</strong>;[%END%]</li> - <li>[%|helploc%]read the list archive <strong>online</strong> (through the mailing list web interface).[%END%]</li> - </ul> - - <p>[%|helploc%]<strong>To read the list archive online</strong>, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Go to the information page of the list</strong> of which you want to read the archive.[%END%]</li> - <li>[%|helploc%]<strong>In the left menu, click on the 'Archive' link</strong>.[%END%]</li> - <li>[%|helploc%]The message index of the current month displays.[%END%]</li> - </ol> - - <h4>[%|helploc%]Presentation of messages[%END%]</h4> - <p>[%|helploc%]<strong>The page always displays the latest messages</strong>; thus if the list was idle during the current month, the messages of the latest active month are displayed.[%END%]</p> - <p>[%|helploc%]When there are <strong>too many messages to be displayed on a single page, only the latest messages display by default</strong>. <strong>To change page, click on the arrow links around the current page's number</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]The '<strong><</strong>' arrow displays older messages.[%END%]</li> - <li>[%|helploc%]The '<strong>></strong>' arrow displays newer messages.[%END%]</li> - <li>[%|helploc%]The '<strong><<</strong>' link displays the oldest messages.[%END%]</li> - <li>[%|helploc%]The '<strong>>></strong>' link displays the latest messages.[%END%]</li> - </ul> - - <h4>[%|helploc%]Chronological and thread order[%END%]</h4> - <p>[%|helploc%]<strong>By default, messages are displayed as threads</strong>: they are <strong>gathered according to their subject</strong>. This way, all answers to a given message are displayed just below the thread's first message and are indented for better readability.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: it is possible for two messages to have the same subject without being related; however, they will be displayed as if they belonged to the same thread.[%END%]</p> - - <p>[%|helploc%]<strong>To display messages chronologically, click on the 'Chronological' link</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: this display setting applies as long as you read the messages of a particular month, but if you change month, the default display setting 'Thread' will apply again.[%END%]</p> - - <h4>[%|helploc%]Browsing through the messages[%END%]</h4> - <p>[%|helploc%]<strong>To read a message, click on its subject</strong>. Then you can browse through the messages sent to the list by clicking on the arrows surrounding the words 'Chronological' and 'Thread':[%END%]</p> - <ul> - <li>[%|helploc%]By clicking on the arrows surrounding the word 'Chronological', you read messages according to their chronological order.[%END%]</li> - <li>[%|helploc%]By clicking on the arrows surrounding the word 'Thread', you read messages as a thread (i.e. gathered according to their subject).[%END%]</li> - <li>[%|helploc%]The left arrows let you browse through older messages.[%END%]</li> - <li>[%|helploc%]The right arrows let you browse through newer messages.[%END%]</li> - </ul> - - <p><strong>[%|helploc%]Other messages belonging to the same thread as the message displayed are listed at its bottom</strong>. Click on their subject to read them.[%END%]</p> - - <p><strong>[%|helploc%]To come back to the messages index, click on 'Chronological' or 'Thread'</strong> according to whether you want to display the index as a chronological history or as a thread. When there are too many messages to be displayed on a single page, <strong>you are brought to the index page displaying the message you just read</strong>, and not to the page displaying the latest messages.[%END%]</p> - - <p>[%|helploc%]<strong>To look at another month's archive, click on the number of the month in the calendar</strong> at the top left of your screen. Every month during which messages have been sent has a clickable number.[%END%]</p> - <p class="retraitita">[%|helploc%]When you are on a message page, the calendar does not display.[%END%]</p> - - <h4>[%|helploc%]Content of the messages: links and attachments[%END%]</h4> - <p>[%|helploc%]Normally, <strong>every link contained in a message is clickable</strong>: just click on it and it will bring you to the linked resource.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: when you click on a link contained in a message, you leave the mailing list environment. If you do not want to do that, open the link in a new window or tab. Leaving the mailing list environment does not mean that you log out: your logout depends on the value you set for the 'Connection expiration period' option on the 'Your preferences' page.[%END%]</p> - <p>[%|helploc%]<strong>When a file is attached to a message, it is displayed at the bottom of the message</strong>. To download it, you only have to <strong>click on its name</strong>.[%END%]</p> - - <h4><a name="answeronline"></a>[%|helploc%]Replying to a message from the mailing list web interface[%END%]</h4> - <p>[%|helploc%]You can reply to a message directly from the mailing list web interface. To do this, <strong>click on the 'Reply' button on the top right of the message</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: after clicking on the 'Reply' button, you will not be able to change the recipient anymore; thus be careful when choosing between the message's sender and the list (i.e. all subscribers)![%END%]</p> - - <p>[%|helploc%]This method is <strong>not very flexible</strong>: from the mailing list web interface, you can not add or change some recipients, add an attachment or format the messages you send. <strong>Thus you might prefer to use an email client or a webmail</strong>.[%END%]</p> - -<!-- renvoyer à [mon adresse] -signoff * --> - - <h4><a name="arcsearch"></a>[%|helploc%]Searching in a list archive[%END%]</h4> - <p>[%|helploc%]If you want to find a particular message or if you look for information on a topic, <strong>you can perform a search in the list archive</strong>. To do that, you have <strong>two options</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]perform a <strong>simple search</strong>;[%END%]</li> - <li>[%|helploc%]perform a <strong>search with the advanced search mode</strong>.[%END%]</li> - </ul> - - - <h5>[%|helploc%]Performing a simple search[%END%]</h5> - <p><span class="remarque">[%|helploc%]Before starting to use the simple search mode, you should know that <a href="#advancedsearch">advanced search</a> is much more flexible than simple search and will suit your needs better if you do not know precisely what you are looking for.[%END%]</span></p> - <p>[%|helploc%]To perform a simple search, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Go to the information page of the list</strong> of your interest.[%END%]<br /> - <span class="retraitita">[%|helploc%]It is impossible to perform a search in the archive of several lists at once. If you want to do it nevertheless, you will need to repeat the search for each list.[%END%]</span></li> - <li>[%|helploc%]In the left menu, <strong>click on the 'Archive' link</strong>. A message index page displays.[%END%]<br /> - <span class="retraitita">[%|helploc%]You can perform searches from index pages and from message pages.[%END%]</span></li> - <li><strong>[%|helploc%]Go to the message index of the month</strong> in which you want to search. To do that, use the calendar displayed at the top left of your screen.[%END%]<br /> - <span class="retraitita">[%|helploc%]The search will process the messages of the month you chose and of the previous month during which messages have been sent. If you do not know when the message was sent, use the advanced search mode.[%END%]</span></li> - <li><strong>[%|helploc%]Enter your keywords</strong> in the search box in the upper right corner of your screen.[%END%]<br /> - <span class="retraitita">[%|helploc%]Be careful: the search engine will process your input as a sentence. If you want to search with several non contiguous words, use the advanced search mode.[%END%]</span></li> - <li>[%|helploc%]<strong>Click on the 'Search' button</strong>.[%END%]</li> - </ol> - <p>[%|helploc%]The messages matching your search display. To know more, please refer to the <a href="#resultsearch">'Search results'</a> section.[%END%]</p> - - <h5><a name="advancedsearch"></a>[%|helploc%]Performing a search with the advanced search mode[%END%]</h5> - <p>[%|helploc%]As the advanced search mode is much more powerful and flexible than the simple search mode, it is much easier to use. To perform an advanced search, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Go to the information page of the list</strong> of your interest.[%END%]<br /> - <span class="retraitita">[%|helploc%]It is impossible to perform a search in the archive of several lists at once. If you want to do it nevertheless, you will need to repeat the search for each list.[%END%]</span></li> - <li>[%|helploc%]In the left menu, <strong>click on the 'Archive' link</strong>. A message index page displays.[%END%]<br /> - <span class="retraitita">[%|helploc%]You can perform searches from index pages and from message pages.[%END%]</span></li> - <li>[%|helploc%]<strong>Click on the 'Advanced search' button</strong> below the search box.[%END%]</li> - <li>[%|helploc%]<strong>Enter your keywords</strong> in the search box.[%END%]</li> - <li>[%|helploc%]Choose your <strong>search options</strong>.[%END%]<br /> - <span class="retraitita">[%|helploc%]Tip: in the 'Extend search field' list, to select all months for which an archive is available, click on the first month, hold down the SHIFT key and click on the last month of the list. Although it is not indicated in the list, the current month will of course be processed as well.[%END%]</span></li> - <li>[%|helploc%]<strong>Click on the 'Search' button</strong>.[%END%]</li> - </ol> - <p>[%|helploc%]The messages matching your search display. To know more, please refer to the <a href="#resultsearch">'Search results'</a> section.[%END%]</p> - - <h5><a name="resultsearch"></a>[%|helploc%]Search results[%END%]</h5> - <p>[%|helploc%]<strong>By default, the messages displayed on the results page are sorted from the latest to the oldest and each page displays up to ten results</strong>. With the advanced search mode, you can change these settings to match your preferences.[%END%]</p> - <p>[%|helploc%]<strong>When there are many results, they are sometimes displayed on several pages</strong>. Do not get caught by this: if you can not find the message you are looking for, make sure that there are no other results page before giving up...[%END%]</p> - <p>[%|helploc%]When you specify a large search range, <strong>sometimes only a part of the messages is processed in a first step of search. In this case, a button labeled 'Continue search' displays below results</strong>. Click on it to search in the rest of messages. If messages are very numerous, sometimes you will need to perform this action several times.[%END%]</p> - <p>[%|helploc%]For each message, the <strong>information displayed on the results page</strong> is the following:[%END%]</p> - <ul> - <li>[%|helploc%]message subject;[%END%]</li> - <li>[%|helploc%]sending date;[%END%]</li> - <li>[%|helploc%]sender;[%END%]</li> - <li>[%|helploc%]a few lines of context containing the searched keywords.[%END%]</li> - </ul> - <p><strong>[%|helploc%]To read one of the messages matching your search, you only need to click on its subject</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: with Internet Explorer, if you go and read a message from the results page, you will not be able to use the 'Back' button of your browser to come back to that page. We advise you to use a modern browser such as Firefox. If you can not use a browser other than Internet Explorer, we advise you to open messages in a new window (right click on links and choose 'Open in New Window') in order to preserve your search results.[%END%]</p> - -<!-- end help_arc.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_editfile.tt2 b/sympa-6.1.20-src/web_tt2/help_editfile.tt2 deleted file mode 100644 index 9de7ee475e1bf611ccc08984183acda281bfd8f5..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_editfile.tt2 +++ /dev/null @@ -1,42 +0,0 @@ -<!-- $Id: help_editfile.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> -<div id="help_editfile"> -[%|helploc%]Service messages description :[%END%] -<ul> -<li>[%|helploc%]Welcome message: This message is sent to new subscribers. It can be -a full MIME structured message (only for MIME gurus).[%END%]</li> - -<li>[%|helploc%]Unsubscribe message: This message is sent when users leave the list -using the UNSUBSCRIBE command.[%END%]</li> - -<li>[%|helploc%]Deletion message: This message is sent to users when you -remove them from the list using the DEL command (unless you hit the -Quiet button.[%END%]</li> - -<li>[%|helploc%]Remind message: This message is sent to each subscriber -when using the command REMIND. It's very useful to help people who are -confused about their own subscription emails or people who are not able to -unsubscribe themselves.[%END%]</li> - -<li>[%|helploc%]Subscribing invitation message: sent to a person if someone -uses the INVITE command to invite someone to subscribe.[%END%]</li> -</ul> - -[%|helploc%]Other files/pages description:[%END%] -<ul> - -<li>[%|helploc%]List homepage: HTML text to describe the list. It is printed on the -right-hand side of the main list page. (default for this is the list description)[%END%]</li> - -<li>[%|helploc%]List description: This text is sent as an answer to the mail command -INFO. It can also be included in the <em>Welcome message</em>.[%END%]</li> - -<li>[%|helploc%]Message header: If this file is not empty, it is added as a MIME -attachment at the beginning of each message distributed to the list.[%END%]</li> - -<li>[%|helploc%]Message footer: same as <em>Message header,</em> but attached at the -end of the message.[%END%]</li> - -</ul> -</div> - -<!-- end help_editfile.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_editlist.tt2 b/sympa-6.1.20-src/web_tt2/help_editlist.tt2 deleted file mode 100644 index f562a2548d02107a7d3f354451f4013e8ce81380..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_editlist.tt2 +++ /dev/null @@ -1,184 +0,0 @@ -<!-- $Id: help_editlist.tt2 7327 2012-04-17 03:59:10Z sikeda $ --> - -[% FOREACH p = param %] - <a name="[% p.key %]"></a> - <strong>[% p.value.title %]</strong> ([% p.key %])[%|helploc%]:[%END%] - <dl> - <dd> - [% IF p.key == 'add' %] - [%|helploc%]Privilege for adding (ADD command) a subscriber to the list[%END%] - [% ELSIF p.key == 'anonymous_sender' %] - [%|helploc%]To hide the sender's email address before distributing the message. It is replaced by the provided email address.[%END%] - [% ELSIF p.key == 'archive' %] - [%|helploc%]Privilege for reading mail archives and frequency of archiving[%END%] - [% ELSIF p.key == 'available_user_options' %] - [%|helploc%]The available_user_options parameter starts a paragraph to define available options for the subscribers of the list.[%END%]<br /><br /> - <ul> - <li>reception <em>modelist</em> ([%|helploc%]Default value: reception mail,notice,digest,digestplain,summary,nomail[%END%])<br /><br /> - [%|helploc%]<em>modelist</em> is a list of modes (mail, notice, digest, digestplain, summary, nomail), separated by commas. Only these modes will be allowed for the subscribers of this list. If a subscriber has a reception mode not in the list, sympa uses the mode specified in the default_user_options paragraph.[%END%] - </li> - </ul> - [% ELSIF p.key == 'bounce' %] - [%|helploc%]This paragraph defines bounce management parameters:[%END%]<br /><br /> - <ul> - <li>warn_rate ([%|helploc%]Default value: bounce_warn_rate robot parameter[%END%])<br /><br /> - [%|helploc%]The list owner receives a warning whenever a message is distributed and the number (percentage) of bounces exceeds this value.[%END%]<br /><br /> - </li> - <li>halt_rate ([%|helploc%]Default value: bounce_halt_rate robot parameter[%END%])<br /><br /> - [%|helploc%]NOT USED YET. If bounce rate reaches the halt_rate, messages for the list will be halted, i.e. they are retained for subsequent moderation.[%END%]<br /><br /> - </li> - <li>expire_bounce_task ([%|helploc%]Default value:[%END%] daily)<br /><br /> - [%|helploc%]Name of the task template used to remove old bounces. Useful for removing bounced subscriber email. If some messages are distributed without receiving new bounce messages, the subscriber's email seems to be OK again. Active if task_manager.pl is running.[%END%] - </li> - </ul> - - [% ELSIF p.key == 'bouncers_level1' %] - [%|helploc%]The Bouncers_level1 paragraphs defines the automatic behavior of bounce management.<br /> - Level 1 is the lower level of bouncing users[%END%] <br /><br /> - - <ul> - <li>rate ([%|helploc%]Default value:[%END%] 45)<br /><br /> - [%|helploc%]Each bouncing user have a score (from 0 to 100).[%END%] [%|helploc%]This parameter defines a lower limit for each category of bouncing users.For example, level 1 begins from 45 to level_2_treshold.[%END%]<br /><br /> - </li> - <li> action ([%|helploc%]Default value:[%END%] notify_bouncers)<br /><br /> - [%|helploc%]This parameter defines which task is automaticaly applied on level 1 bouncers.[%END%]<br /><br /> - </li> - <li>notification ([%|helploc%]Default value:[%END%] owner)<br /><br /> - [%|helploc%]When automatic task is executed on level 1 bouncers, a notification email can be send to listowner or listmaster.[%END%]<br /><br /> - </li> - </ul> - - [% ELSIF p.key == 'bouncers_level2' %] - [%|helploc%]The Bouncers_levelX paragraphs defines the automatic behavior of bounce management.<br /> - Level 2 is the highest level of bouncing users[%END%] <br /><br /> - - <ul> - <li>rate ([%|helploc%]Default value:[%END%] 80)<br /><br /> - [%|helploc%]Each bouncing user have a score (from 0 to 100).[%END%] [%|helploc%]This parameter defines the score range defining each category of bouncing users.For example, level 2 is for users with a score between 80 and 100.[%END%]<br /><br /> - </li> - <li>action ([%|helploc%]Default value:[%END%] notify_bouncers)<br /><br /> - [%|helploc%]This parameter defines which task is automaticaly applied on level 2 bouncers.[%END%]<br /><br /> - </li> - <li>notification ([%|helploc%]Default value:[%END%] owner)<br /><br /> - [%|helploc%]When automatic task is executed on level 2 bouncers, a notification email can be send to listowner or listmaster.[%END%]<br /><br /> - </li> - </ul> - [% ELSIF p.key == 'cookie' %] - [%|helploc%]This parameter is a confidential item for generating authentication keys for administrative commands (ADD, DELETE, etc.). This parameter should remain concealed, even for owners. The cookie is applied to all list owners, and is only taken into account when the owner has the auth parameter.[%END%] - [% ELSIF p.key == 'custom_header' %] - [%|helploc%]This parameter is optional. The headers specified will be added to the headers of messages distributed via the list. As of release 1.2.2 of Sympa, it is possible to put several custom header lines in the configuration file at the same time.[%END%] - [% ELSIF p.key == 'custom_subject' %] - [%|helploc%]This parameter is optional. It specifies a string which is added to the subject of distributed messages (intended to help users who do not use automatic tools to sort incoming messages). This string will be surrounded by [] characters.[%END%] - [% ELSIF p.key == 'default_user_options' %] - [%|helploc%]The default_user_options parameter starts a paragraph to define a default profile for the subscribers of the list.[%END%]<br /><br /> - <ul> - <li>reception notice | digest | summary | nomail | mail<br /><br />[%|helploc%]Mail reception mode.[%END%]<br /><br /></li> - <li>visibility conceal | noconceal<br /><br />[%|helploc%]Visibility of the subscriber with the REVIEW command.[%END%]</li> - </ul> - [% ELSIF p.key == 'del' %] - [%|helploc%]This parameter specifies who is authorized to use the DEL command.[%END%] - [% ELSIF p.key == 'digest' %] - [%|helploc%]Definition of digest mode. If this parameter is present, subscribers can select the option of receiving messages in multipart/digest MIME format, or as a plain text digest. Messages are then grouped together, and compiled messages are sent to subscribers according to the frequency selected with this parameter.[%END%] - [% ELSIF p.key == 'editor' %] - [%|helploc%]Editors are responsible for moderating messages. If the mailing list is moderated, messages posted to the list will first be passed to the editors, who will decide whether to distribute or reject it.[%END%] <br /> - [%|helploc%]FYI: Defining editors will not make the list moderated; you will have to set the "send" parameter.[%END%]<br /> - [%|helploc%]FYI: If the list is moderated, any editor can distribute or reject a message without the knowledge or consent of the other editors. Messages that have not been distributed or rejected will remain in the moderation spool until they are acted on.[%END%] - [% ELSIF p.key == 'expire_task' %] - [%|helploc%]This parameter states which model is used to create an expire task. An expire task regularly checks the subscription or resubscription date of subscribers and asks them to renew their subscription. If they don't they are deleted.[%END%] - [% ELSIF p.key == 'footer_type' %] - [%|helploc%]List owners may decide to add message headers or footers to messages sent via the list. This parameter defines the way a footer/header is added to a message.[%END%]<br /><br /> - <ul> - <li>footer_type mime<br /><br /> - [%|helploc%]The default value. Sympa will add the footer/header as a new MIME part.[%END%]<br /><br /> - </li> - <li>footer_type append<br /><br /> - [%|helploc%]Sympa will not create new MIME parts, but will try to append the header/footer to the body of the message. Predefined message-footers will be ignored. Headers/footers may be appended to text/plain messages only.[%END%] - </li> - </ul> - [% ELSIF p.key == 'host' %] - [%|helploc%]Domain name of the list, default is the robot domain name set in the related robot.conf file or in file /etc/sympa.conf.[%END%] - [% ELSIF p.key == 'include_file' %] - [%|helploc%]Include subscribers from this file. The file should contain one e-mail address per line (lines beginning with a "#" are ignored).[%END%] - [% ELSIF p.key == 'include_ldap_2level_query' %] - [%|helploc%]This paragraph defines parameters for a two-level query returning a list of subscribers. Usually the first-level query returns a list of DNs and the second-level queries convert the DNs into e-mail addresses. This feature requires the Net::LDAP (perlldap) PERL module.[%END%] - [% ELSIF p.key == 'include_ldap_query' %] - [%|helploc%]This paragraph defines parameters for a query returning a list of subscribers. This feature requires the Net::LDAP (perlldap) PERL module.[%END%] - [% ELSIF p.key == 'include_list' %] - [%|helploc%]Include subscribers from other list. All subscribers of list listname become subscribers of the current list. You may include as many lists as required, using one include_list listname line for each included list. Any list at all may be included; you may therefore include lists which are also defined by the inclusion of other lists. Be careful, however, not to include list A in list B and then list B in list A, since this will give rise to an infinite loop.[%END%] - [% ELSIF p.key == 'include_remote_sympa_list' %] - [%|helploc%]Sympa can contact another Sympa service using HTTPS to fetch a remote list in order to include each member of a remote list as subscriber. You may include as many lists as required, using one include_remote_sympa_list paragraph for each included list. Be careful, however, not to give rise to an infinite loop resulting from cross includes.[%END%]<br /><br /> - [%|helploc%]For this operation, one Sympa site acts as a server while the other one acs as client. On the server side, the only setting needed is to give permission to the remote Sympa to review the list. This is controlled by the review scenario.[%END%] - [% ELSIF p.key == 'include_sql_query' %] - [%|helploc%]This parameter is used to begin a paragraph defining the SQL query parameters. [%END%] - [% ELSIF p.key == 'lang' %] - [%|helploc%]This parameter defines the language used for the list. It is used to initialize a user's language preference; Sympa command reports are extracted from the associated message catalog.[%END%] - [% ELSIF p.key == 'max_size' %] - [%|helploc%]Maximum size of a message in 8-bit bytes.[%END%] - [% ELSIF p.key == 'owner' %] - [%|helploc%]Owners are managing subscribers of the list. They may review subscribers and add or delete email addresses from the mailing list. If you are a privileged owner of the list, you can choose other owners for the mailing list. Privileged owners may edit a few more options than other owners. [%END%] - [% ELSIF p.key == 'priority' %] - [%|helploc%]The priority with which Sympa will process messages for this list. This level of priority is applied while the message is going through the spool. The z priority will freeze the message in the spool.[%END%] - [% ELSIF p.key == 'remind' %] - [%|helploc%]This parameter specifies who is authorized to use the remind command.[%END%] - [% ELSIF p.key == 'remind_return_path' %] - [%|helploc%]Same as welcome_return_path, but applied to remind messages.[%END%] - [% ELSIF p.key == 'remind_task' %] - [%|helploc%]This parameter states which model is used to create a remind task. A remind task regularly sends subscribers a message which reminds them of their list subscriptions.[%END%] - [% ELSIF p.key == 'reply_to_header' %] - [%|helploc%]The reply_to_header parameter starts a paragraph defining what Sympa will place in the Reply-To: SMTP header field of the messages it distributes.[%END%]<br /><br /> - <ul> - <li>value sender | list | all | other_email ([%|helploc%]Default value:[%END%] sender)<br /><br /> - [%|helploc%]This parameter indicates whether the Reply-To: field should indicate the sender of the message (sender), the list itself (list), both list and sender (all) or an arbitrary e-mail address (defined by the other_email parameter).[%END%]<br /><br /> - [%|helploc%]Note: it is inadvisable to change this parameter, and particularly inadvisable to set it to list. Experience has shown it to be almost inevitable that users, mistakenly believing that they are replying only to the sender, will send private messages to a list. This can lead, at the very least, to embarrassment, and sometimes to more serious consequences.[%END%]<br /><br /> - </li> - <li>other_email [%|helploc%]an_email_address[%END%]<br /><br /> - [%|helploc%]If value was set to other_email, this parameter defines the e-mail address used.[%END%]<br /><br /> - </li> - <li>apply respect | forced ([%|helploc%]Default value:[%END%] respect)<br /><br /> - [%|helploc%]The default is to respect (preserve) the existing Reply-To: SMTP header field in incoming messages. If set to forced, Reply-To: SMTP header field will be overwritten.[%END%] - </li> - </ul> - [% ELSIF p.key == 'review' %] - [%|helploc%]This parameter specifies who can access the list of members. Since subscriber addresses can be abused by spammers, it is strongly recommended that you only authorize owners or subscribers to access the subscriber list. [%END%] - [% ELSIF p.key == 'send' %] - [%|helploc%]This parameter specifies who can send messages to the list.[%END%]<br /><br /> - [% ELSIF p.key == 'shared_doc' %] - [%|helploc%]This paragraph defines read and edit access to the shared document repository.[%END%] - [% ELSIF p.key == 'spam_protection' %] - [%|helploc%]There is a need to protect Sympa web sites against spambots which collect email addresses from public web sites. Various methods are available in Sympa and you can choose to use them with the spam_protection and web_archive_spam_protection parameters. Possible value are:[%END%]<br /><br /> - <ul> - <li>javascript: [%|helploc%]the address is hidden using a javascript. A user who enables javascript can see a nice mailto address where others have nothing.[%END%]</li> - <li>at: [%|helploc%]the @ char is replaced by the string " AT ".[%END%]</li> - <li>none: [%|helploc%]no protection against spammer.[%END%]</li> - </ul> - [% ELSIF p.key == 'subject' %] - [%|helploc%]This parameter indicates the subject of the list, which is sent in response to the LISTS mail command. The subject is a free form text limited to one line.[%END%] - [% ELSIF p.key == 'subscribe' %] - [%|helploc%]The subscribe parameter defines the rules for subscribing to the list.[%END%] - [% ELSIF p.key == 'topics' %] - [%|helploc%]This parameter allows the classification of lists. You may define multiple topics as well as hierarchical ones. WWSympa's list of public lists uses this parameter.[%END%] - [% ELSIF p.key == 'ttl' %] - [%|helploc%]Sympa caches user data extracted using the include parameter. Their TTL (time-to-live) within Sympa can be controlled using this parameter. The default value is 3600[%END%] - [% ELSIF p.key == 'unsubscribe' %] - [%|helploc%]This parameter specifies the unsubscription method for the list. Use open_notify or auth_notify to allow owner notification of each unsubscribe command.[%END%] - [% ELSIF p.key == 'visibility' %] - [%|helploc%]This parameter indicates whether the list should feature in the output generated in response to a LISTS command or should be shown in the list overview of the web-interface.[%END%] - [% ELSIF p.key == 'web_archive' %] - [%|helploc%]Defines who can access the web archive for the list.[%END%] - [% ELSIF p.key == 'web_archive_spam_protection' %] - [%|helploc%]Idem spam_protection is provided but it can be used only for web archives. Access requires a cookie, and users must submit a small form in order to receive a cookie before browsing the archives. This blocks all robot, even google and co.[%END%] - [% ELSIF p.key == 'welcome_return_path' %] - [%|helploc%]If set to unique, the welcome message is sent using a unique return path in order to remove the subscriber immediately in the case of a bounce.[%END%] - [% ELSIF p.key == 'msg_topic' %] - [%|helploc%]This paragraph defines a topic used to tag a message of a list, named by msg_topic.name ("other" is a reserved word), its title is msg_topic.title. The msg_topic.keywords entry is optional and allows automatic tagging. This should be a list of keywords, separated by ','.[%END%] - [% ELSIF p.key == 'msg_topic_keywords_apply_on' %] - [%|helploc%]This parameter indicates which part of the message is used to perform automatic tagging.[%END%] - [% ELSIF p.key == 'msg_topic_tagging' %] - [%|helploc%]This parameter indicates if the tagging is optional or required for a list.[%END%] - [% ELSE %] - [%|helploc%]No Comment[%END%] - [% END %] - </dd> - </dl> -[% END %] -<!-- end help_editlist.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_faqadmin.tt2 b/sympa-6.1.20-src/web_tt2/help_faqadmin.tt2 deleted file mode 100644 index 474f3cc6aac33b03d4376501033c1b6fcc1d37d3..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_faqadmin.tt2 +++ /dev/null @@ -1,15 +0,0 @@ -<!-- $Id: help_faqadmin.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - - <h3 class="block">[%|helploc%]Administrators Frequently Asked Questions[%END%]</h3> - - <h4>[%|helploc%]A subscriber does not receive the list messages[%END%]</h4> - <p>[%|helploc%]To find the cause of the problem, do as follows:[%END%]</p> - <ol> - <li>[%|helploc%]<strong>Check that the user is really subscribed to the list</strong> on the 'Manage subscribers' page.[%END%]</li> - <li>[%|helploc%]<strong>Check the subscriber's message delivery mode</strong>; the page about the subscriber is available by clicking on his/her email address from the members list. When the delivery mode is the 'Digest' mode, it is normal that the subscriber does not receive messages as soon as they are sent.[%END%]</li> - <li>[%|helploc%]<strong>Check that the subscriber's email address is not bouncing</strong> on the 'Bounces' page. A subscriber email address is considered to be bouncing when messages sent to it generate error logs (called "bounces"). These errors can be temporary (inbox full, mail server unavailable) or permanent (no email account for the user). In any case, the mailing list server automatically manages the deletion of addresses generating too many errors.[%END%]</li> - <li>[%|helploc%]<strong>Try and send a message yourself to the subscriber</strong> in order to check if he/she receives it.[%END%]</li> - <li>[%|helploc%]As a last resort, <strong>contact the listmaster</strong>, who will check the mail server logs in order to find the cause of the problem.[%END%]</li> - </ol> - -<!-- end help_faqadmin.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_faquser.tt2 b/sympa-6.1.20-src/web_tt2/help_faquser.tt2 deleted file mode 100644 index 86e869785039e00ceb27a476df1789207772c7b6..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_faquser.tt2 +++ /dev/null @@ -1,73 +0,0 @@ -<!-- $Id: help_faquser.tt2 10201 2014-01-31 08:17:34Z sikeda $ --> - - <h3 class="block">[%|helploc%]Users Frequently Asked Questions[%END%]</h3> - - <h4>[%|helploc%]You can not subscribe to a list[%END%]</h4> - <p>[%|helploc%]This problem may be due to the following reasons:[%END%]</p> - <ul> - <li><strong>[%|helploc%]The list owners forgot to process your subscription request</strong>: to err is human, and your request might have been lost among many other messages! Resubmit your request before <a href="#contactadmin">contacting list owners directly</a>.[%END%]</li> - <li><strong>[%|helploc%]Subscription to the list is reserved to a certain category of people</strong>. To know more, <a href="#contactadmin">contact list owners</a>.[%END%]</li> - </ul> - - <h4>[%|helploc%]You can not log on to the mailing list web interface[%END%]</h4> - <p>[%|helploc%]This problem may be due to the following reasons:[%END%]</p> - <ul> - <li>[%|helploc(path_cgi)%]<strong>You have no password</strong>. To be given a password, follow the <a href="%1/firstpasswd">First login?</a> link from the homepage. You will receive your new password by email.[%END%]</li> - <li>[%|helploc(path_cgi)%]<strong>You entered an incorrect password</strong>. If you forgot your password, you can reset it. To do so, follow the <a href="%1/renewpasswd">Lost password?</a> link from the homepage.[%END%]</li> - - <li>[%|helploc%]<strong>You are not using the correct username</strong> (the email address with which you are subscribed to the list).[%END%]</li> - </ul> - <p class="retraitita">[%|helploc%]In order to avoid any mistake when typing your password, you can type it into another application (such as your email client) and copy and paste it into your web browser.[%END%]</p> - - <h4>[%|helploc%]You do not receive (all) messages sent to a list[%END%]</h4> - <p>[%|helploc%]This problem can have multiple reasons:[%END%]</p> - <ul> - <li><a name="notsubscribedyet"></a><strong>[%|helploc%]You have never been subscribed to the list[%END%]</strong>: - <ul> - <li>[%|helploc%]Maybe you made a mistake in your email address when you tried to subscribe.[%END%]</li> - <li>[%|helploc%]Maybe you are subscribed with an email address other than the one you are checking.[%END%]</li> - <li>[%|helploc%]Maybe your subscription request was rejected by the list owners.[%END%]</li> - </ul> - [%|helploc(path_cgi)%]In any case, try and <a href="%1/help/user#subscribe">subscribe</a> again.[%END%]</li> - <li><a name="notsubscribedanymore"></a><strong>[%|helploc%]You are not subscribed to the list anymore[%END%]</strong>: - <ul> - <li>[%|helploc(path_cgi)%]If your address has been bouncing for a while, you might have been automatically unsubscribed by the system (or even by the list owners). Try and <a href="%1/help/user#subscribe">subscribe again</a> after ensuring that your email address will not be in trouble again.[%END%]</li> - <li>[%|helploc%]If you have not respected the different rules applying to the mailing list, the list owners might have "banned" you...[%END%]</li> - <li>[%|helploc(path_cgi)%]You might also have been arbitrarily unsubscribed by an ill-intentioned person, in case the list is not configured to send a confirmation request for any subscription and unsubscription request... In that case, try and <a href="%1/help/user#subscribe">subscribe</a> again.[%END%]</li> - </ul> - <li>[%|helploc(path_cgi)%]<strong>Your <a href="%1/help/user#deliverymode">delivery mode</a> does not allow you to receive messages</strong>: for example, it is the case with the 'Nomail' delivery mode.[%END%]</li> - <li>[%|helploc%]<strong>Your inbox is full</strong>. Be careful: when your inbox is not completely full, you receive only small messages, which makes it difficult to understand what actually is the problem... Furthermore, if your email address causes trouble on a regular basis, you might be unsubscribed by the list owners or by the system. Thus, you should clean your inbox frequently.[%END%]</li> - <li>[%|helploc(path_cgi)%]<strong>Your inbox is subject to some restrictions</strong>: it does not allow you to receive messages with attachments, bans some types of attachments or limits the maximum size of incoming messages; in that case, we advise you to choose the <a href="%1/help/user#deliverymode">Urlize delivery mode</a>.[%END%]</li> - </ul> - - <!--Vérifier systèmes anti-virus, anti-spam--> - - <h4>[%|helploc%]You can not send messages to a list[%END%]</h4> - <p>[%|helploc%]This problem can have multiple reasons:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>You have <a href="#notsubscribedyet">never been subscribed</a></strong> to the list.[%END%]</li> - <li>[%|helploc%]<strong>You are <a href="#notsubscribedanymore">not subscribed to the list anymore</a></strong>.[%END%]</li> - <li>[%|helploc%]<strong>You are using another address</strong> than the one with which you are subscribed to the list.[%END%]</li> - <li>[%|helploc%]<strong>If the list is a moderated list, the distribution of the message depends on the moderators' availability</strong>: they can not monitor the list night and day! Thus the distribution of your message might be a bit delayed.[%END%]</li> - <li>[%|helploc(conf.host)%]<strong>If the list is a moderated list, your message might have been rejected by a moderator</strong>. In case you received no notice, you can possibly send a message to nameofthelist-request@%1 to ask for an explanation.[%END%]</li> - <li>[%|helploc%]<strong>The message you are trying to send does not fulfill the conditions to be distributed</strong> on the list: it may be too large, contain a forbidden type of attachment or even contain any type of attachment (in case attachments are forbidden on the list).[%END%]</li> - <li>[%|helploc%]<strong>The problem may also come from your email account</strong>:[%END%] - <ul> - <li>[%|helploc%]The mail server is temporarily unavailable.[%END%]</li> - <li>[%|helploc%]Your inbox is full and it prevents you from sending new messages.[%END%]</li> - <li>[%|helploc%]Your inbox is subject to some restrictions: it does not allow you to send messages with attachments, bans some types of attachments or limits the maximum size of outgoing messages.[%END%]</li> - </ul></li> - <li>[%|helploc%]Last, <strong>you might have made a mistake in the list address</strong> when sending your message![%END%]</li> - </ul> - - <h4>[%|helploc%]You can not unsubscribe from a list[%END%]</h4> - <p>[%|helploc%]This problem can have multiple reasons:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>You are using another address</strong> than the one with which you are subscribed to the list.[%END%]</li> - <li>[%|helploc%]<strong>You are subscribed through a dynamic data source</strong> (examples: databases, <acronym lang="en" xml:lang="en" title="Lightweight Directory Access Protocol">LDAP</acronym> directories, etc.) which does not allow you to unsubscribe. <a href="#contactadmin">Contact the list owners</a> to know more about this.[%END%]</li> - <li>[%|helploc%]<strong>The list owners forgot to process your unsubscription request</strong>: to err is human, and your request might have been lost among many other messages! Resubmit your request before <a href="#contactadmin">contacting list owners directly</a>.[%END%]</li> - </ul> - - <h4><a name="contactadmin"></a>[%|helploc%]You want to contact list owners[%END%]</h4> - <p>[%|helploc(conf.host)%]The list owners and moderators' names are mentioned in the left menu. However, you should never write directly to a list owner or moderator: first, the person to whom you are writing might be absent, and furthermore, it is better to inform all owners and moderators of your request. When you have a question or remark, <strong>the address you should write to is: nameofthelist-request@%1</strong> (replace 'nameofthelist' by the name of the list).[%END%]</p> -<!-- end help_faquser.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_introduction.tt2 b/sympa-6.1.20-src/web_tt2/help_introduction.tt2 deleted file mode 100644 index 6636355d4b4cd7fd82152e348e49d7e1617228d7..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_introduction.tt2 +++ /dev/null @@ -1,123 +0,0 @@ -<!-- $Id: help_introduction.tt2 7490 2012-07-19 10:07:15Z sikeda $ --> - -<h2 class="block">[%|helploc%]Mailing lists - General introduction[%END%]</h2> - - <h3>[%|helploc%]What is a mailing list?[%END%]</h3> - <p>[%|helploc%]A mailing list is a <strong>distribution list allowing a group of subscribers to automatically receive by email all messages sent to the list</strong>: every message sent to the list by a subscriber is received by all the other subscribers. When subscribed to a mailing list, it is possible to send messages, to reply to them or to read them without contributing (i.e. to "lurk").[%END%]</p> - <p><strong>[%|helploc%]Special cases:</strong>[%END%]</p> - <ul> - <li>[%|helploc%]It is sometimes possible to send messages to a mailing lit without having subscribed to it. However, you need to be subscribed to a list to receive its messages.[%END%]</li> - <li>[%|helploc%]It is sometimes impossible to send messages to the list even though you are actually subscribed to it: it is the case for announcement lists, which are used to transmit information from a unique sender to a large number of recipients.[%END%]</li> - </ul> - - <h3>[%|helploc%]Interest of mailing lists[%END%]</h3> - <p>[%|helploc%]People subscribe to a mailing list (sometimes abbreviated in <acronym title="Mailing List">ML</acronym>) to <strong>be informed about a particular topic</strong> and to <strong>take part in exchanges about it</strong>. Examples are:[%END%]</p> - <ul> - <li>[%|helploc%]mailing list for all the employees of a company;[%END%]</li> - <li>[%|helploc%]mailing list reserved to the participants in a project;[%END%]</li> - <li>[%|helploc%]mailing list dedicated to a class of students;[%END%]</li> - <li>[%|helploc%]mailing list about the latest news in computer security;[%END%]</li> - <li>[%|helploc%]mailing list of mutual aid between handymen;[%END%]</li> - <li>[%|helploc%]mailing list restricted to a family and dedicated to the organization of large family gatherings;[%END%]</li> - <li>[%|helploc%]and so on![%END%]</li> - </ul> - - <h3>[%|helploc%]Types of mailing lists[%END%]</h3> - <p>[%|helploc%]There are <strong>thousands of mailing lists</strong> of all kinds on the Internet: public or private, free or not, with subscription subject to conditions or not, etc. Those lists may have from a dozen up to several thousand members.[%END%]</p> - <p>[%|helploc%]According to the way they work, we can distinguish between <strong>two types of lists</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>Announcements lists</strong> allow subscribers to receive messages without being allowed to post some themselves. In fact, those messages are newsletters: electronic magazines, daily services (daily horoscope, daily weather report, daily security alert, etc.), update notices about a website, etc. With this type of mailing list, the information flows from a unique sender to a large number of recipients.[%END%]</li> - <li>[%|helploc%]<strong>Discussion lists</strong> allow all subscribers to take part in exchanges. Those lists can be moderated or not:[%END%] - <ul> - <li>[%|helploc%]In a <strong>moderated discussion list</strong>, messages are transmitted to all subscribers after approval by one of the list moderators. Moderation is a token of quality for the list. For example, it ensures that subscribers will not receive off-topic messages, unsolicited commercial messages (spams), messages containing large attachments, etc.[%END%]</li> - <li>[%|helploc%]In a <strong>non moderated discussion list</strong>, messages are transmitted to all subscribers as soon as the mailing list management robot receives them.[%END%]</li> - </ul></li> - </ul> - - <h3><a name="features"></a>[%|helploc%]Features[%END%]</h3> - <p>[%|helploc%]Once subscribed to a mailing list service, you can:[%END%]</p> - <ul> - <li><strong>[%|helploc%]search for mailing lists</strong> matching your main interests or your particular situation;[%END%]</li> - <li><strong>[%|helploc%]manage your subscriptions</strong>:[%END%] - <ul> - <li>[%|helploc(path_cgi)%]<a href="%1/help/user#subscribe">subscribe</a> to lists,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/user#unsubscribe">unsubscribe</a> from lists to which you are subscribed,[%END%]</li> - <li>[%|helploc(path_cgi)%]change your <a href="%1/help/user#options">subscriber options</a> list by list,[%END%]</li> - <li>[%|helploc(path_cgi)%]change your <a href="%1/help/user#pref">general preferences</a>, which apply to the whole mailing list environment (name, password, language of the mailing list web interface, etc.);[%END%]</li> - </ul></li> - <li><strong>[%|helploc%]use mailing lists[%END%]</strong>: - <ul> - <li>[%|helploc(path_cgi)%]read the <a href="%1/help/arc">online message archive of lists to which you are not subscribed</a> if that archive is public and if your personal rights allow you to access those lists,[%END%]</li> - <li>[%|helploc(path_cgi)%]read the <a href="%1/help/arc">archive of lists to which you are subscribed</a>,[%END%]</li> - <li>[%|helploc(path_cgi)%]perform <a href="%1/help/arc#arcsearch">searches in the list archive</a>,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/sendmsg">send messages</a> to lists to which you are subscribed,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/shared#shared_read">download documents</a> from the shared document web space,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/shared#shared_upload">upload documents</a> in the shared document web space;[%END%]</li> - </ul></li> - <li><strong>[%|helploc%]manage mailing lists[%END%]</strong>: - <ul> - <li>[%|helploc(path_cgi)%]<a href="%1/help/admin#create_list">create new lists</a> (restricted access) - subject to authorization,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/admin#edit_list">configure lists</a> you own,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/admin#manage_members">manage subscriptions</a>,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/admin#manage_shared">manage the shared document web space</a>,[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/admin#moderate">moderate lists</a> for which you are a moderator.[%END%]</li> - </ul></li> - </ul> - - <h3><a name="roles"></a>[%|helploc%]How the mailing list service works: roles and responsibilities[%END%]</h3> - - <p>[%|helploc%]A mailing list service involves four types of roles:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>listmaster;</strong>[%END%]</li> - <li>[%|helploc%]<strong>owner;</strong>[%END%]</li> - <li>[%|helploc%]<strong>moderator;</strong>[%END%]</li> - <li>[%|helploc%]<strong>subscriber.</strong>[%END%]</li> - </ul> - <p>[%|helploc%]It is possible to have several roles at once (for example, you can be an owner and a moderator of a list and be subscribed to several others).[%END%]</p> - - <h4>[%|helploc%]Listmasters[%END%]</h4> - <p>[%|helploc%]Listmasters are in charge of the <strong>management of the mailing list service</strong>. Their duties:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>manage the mailing list server</strong> (deployment, maintenance, etc.);[%END%]</li> - <li>[%|helploc%]<strong>define the general orientations of the mailing list service</strong>:[%END%] - <ul> - <li>[%|helploc%]who will be allowed to ask for the creation of a new list,[%END%]</li> - <li>[%|helploc%]which options will be available to manage lists (scenario definition),[%END%]</li> - <li>[%|helploc%]what the default files will contain (creation of templates),[%END%]</li> - <li>[%|helploc%]what will the mailing list web interface look like;[%END%]</li> - </ul></li> - <li>[%|helploc%]<strong>set the way the mailing list service should be used</strong> and <strong>document those rules through providing charters</strong> to subscribers, moderators and owners;[%END%]</li> - <li>[%|helploc%]<strong>approve of requests of mailing list creations</strong>;[%END%]</li> - <li>[%|helploc%]<strong>temporarily replace list owners</strong> when necessary; on the other hand, listmasters are not supposed to take the place of moderators.[%END%]</li> - </ul> - <p><strong>[%|helploc%]List owners and moderators can turn to listmasters</strong> when they face a problem not dealt with by the documentation or for any comment. However, in order not to flood listmasters with messages, it is recommended that subscribers rather turn to list owners.[%END%]</p> - - <h4>[%|helploc%]Owners[%END%]</h4> - <p><strong>[%|helploc%]The list owner is generally its creator</strong> or, failing him/her, the person who requested the list creation or who became responsible for it. <strong>His/her role</strong>:[%END%]</p> - <ul> - <li>[%|helploc(path_cgi)%]<strong>define the <a href="%1/help/admin#edit_list">way the list will be used</a></strong>;[%END%]</li> - <li>[%|helploc(path_cgi)%]<strong> write a <a href="%1/help/admin#charter">list charter</a></strong> aimed at subscribers;[%END%]</li> - <li>[%|helploc(path_cgi)%]<strong>appoint one or several <a href="%1/help/listconfig#description">moderators</a></strong>;[%END%]</li> - <li>[%|helploc(path_cgi)%]<strong>manage <a href="%1/help/admin#manage_members">subscriptions and unsubscriptions</a></strong>;[%END%]</li> - <li>[%|helploc(path_cgi)%]<strong>decide whether it is relevant to put a <a href="%1/help/admin#manage_shared">shared document web space</a></strong> at the subscribers' disposal;[%END%]</li> - <li>[%|helploc%]<strong>answer questions from subscribers and potential subscribers about the list;</strong>[%END%]</li> - <li>[%|helploc%]etc.[%END%]</li> - </ul> - <p>[%|helploc%]A list can have several owners. However, the <strong>'Privileged' profile</strong> is reserved to the list's creator; other owners have a 'Normal' profile, which has fewer prerogatives.[%END%]</p> - - <h4>[%|helploc%]Moderators[%END%]</h4> - - <p>[%|helploc(path_cgi)%]<strong>Moderators are appointed by the list owner</strong>. They are <strong>in charge of <a href="%1/help/admin#moderate">controlling the relevancy of the messages</a></strong> sent to the list: after reading them, <strong>they choose to accept or to reject them </strong>. Moderation occurs before the message is actually sent to subscribers. Rejection of a message is possibly followed by a notice to the sender in order to explain the reason for that rejection.[%END%]</p> - <p>[%|helploc%]A list can have <strong>one or several moderators</strong>; generally, the list owner is also a moderator.[%END%]</p> - <p>[%|helploc%]This concerns only moderated lists.[%END%]</p> - - <h3><a name="policy"></a>[%|helploc%]Regulatory framework[%END%]</h3> - <p>[%|helploc%]The use of a mailing list service means respecting a number of rules:[%END%]</p> - <ul> - <li>[%|helploc%]In most mailing list services, subscribers receive a 'List subscribers charter' on subscription. Then they are obliged to respect all the rules contained in that charter.[%END%]</li> - <li>[%|helploc%]If available, list owners and moderators have to conform to the 'Owner and moderator charter'.[%END%]</li> - <li>[%|helploc%]The use of mailing lists naturally means respecting the rules of good practices as regards email (the "Netiquette").[%END%]</li> - </ul> - <p>[%|helploc(path_cgi)%]To know more, refer to the section dedicated to <a href="%1/help/sendmsg#rulesuser">good practices for subscribers</a> and to the section about <a href="%1/help/admin#rulesadmin">good practices for owners and moderators</a>.[%END%]</p> - <hr /> -<!-- end help_introduction.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_listconfig.tt2 b/sympa-6.1.20-src/web_tt2/help_listconfig.tt2 deleted file mode 100644 index 5467ff164c42d44c2cb12d428dde38742d0c03c3..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_listconfig.tt2 +++ /dev/null @@ -1,177 +0,0 @@ -<!-- $Id: help_listconfig.tt2 7490 2012-07-19 10:07:15Z sikeda $ --> - - <h2 class="block"><a name="listconfig"></a>[%|helploc%]Configuring the list[%END%]</h2> - <p>[%|helploc%]As the list configuration is quite complex, it is divided in several parts with a separate page for each part:[%END%]</p> - <ul> - <li>[%|helploc%]<a href="#description">List definition</a>;[%END%]</li> - <li>[%|helploc%]<a href="#sending">Sending/receiving</a>;[%END%]</li> - <li>[%|helploc%]<a href="#command">Privileges</a>;[%END%]</li> - <li>[%|helploc%]<a href="#archives">Archive</a>;[%END%]</li> - <li>[%|helploc%]<a href="#bounces">Bounces</a>;[%END%]</li> - <li>[%|helploc%]<a href="#other">Miscellaneous</a>.[%END%]</li> - </ul> - <p>[%|helploc%]We advise you to <strong>make configuration changes very progressively</strong>: thus, if the result does not match your expectations, it will be easier to backtrack.[%END%]</p> - <p>[%|helploc%]The list administration module offers you <strong>many options to configure your list</strong>. However, these options might not match your own needs perfectly. To cure this problem, you can <strong>ask the listmasters to create new options</strong> (within the limits of what they can do, naturally...): access and/or rights limited to some categories of people according to the place they log on from, the domain of their email address, the user group they belong to, etc.[%END%]</p> - - <h3><a name="description"></a>[%|helploc%]List definition[%END%]</h3> - <p>[%|helploc%]In the '<strong>Subject of the list</strong>' area, you can change the subject you had chosen when creating the list. This subject displays as a header for all the list pages, and is also be visible on list index pages (list of lists, list of your subscriptions, etc.) and in the browser title bar.[%END%]</p> - <p>[%|helploc%]You can also change the '<strong>Visibility of the list</strong>'. The options available are the following:[%END%]</p> - <ul> - <li>[%|helploc%]conceal except for subscribers (conceal) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]intranet access (intranet);[%END%]</li> - <li>[%|helploc%]no conceal (noconceal);[%END%]</li> - <li>[%|helploc%]conceal even for subscribers (secret);[%END%]</li> - </ul> - <p class="retraitita">[%|helploc%]If you want to limit the list visibility according to other criteria, you should ask the listmasters: they may be able to create a new option matching your needs (example: list visible only by members of a user group, of an Internet domain, etc.).[%END%]</p> - <p>[%|helploc%]In the 'Owners' and 'Moderators' areas, you can <strong>add owners and moderators</strong> to the list or <strong>change their personal information</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]For each owner/moderator, you have to indicate an <strong>email address</strong> and a <strong>name</strong>.[%END%]</li> - <li>[%|helploc%]You can also add the information of your choice in the '<strong>Private information</strong>' input box (phone number, function, etc.); this information will only be accessible by listmasters and list owners with a 'Privileged' profile.[%END%]</li> - <li>[%|helploc%]You can change the <strong>message delivery mode</strong> (the only options available on this page are 'mail' and 'nomail').[%END%]</li> - <li>[%|helploc%]The 'Profile' parameter can not be changed: the <strong>'Privileged' profile</strong> is reserved to the list creator (other owners have a 'Normal' profile).[%END%]</li> - </ul> - <p class="retraitita">[%|helploc%]Be careful: becoming owner or moderator of a list does not mean that you are automatically subscribed to that list. Thus owners and moderators have to subscribe themselves to the list.[%END%]</p> - <p>[%|helploc%]To <strong>delete owners/moderators</strong>, clear the content of the input boxes relating to the person you want to delete and click on the 'Update' button.[%END%]</p> - <p>[%|helploc%]You can also change the <strong>list topic</strong> as well as its <strong>language</strong>. If you change the list language, all predefined messages will be sent in the chosen language (be careful: subject to the availability of a translation!).[%END%]</p> - <p>[%|helploc%]You can not change the <strong>Internet domain</strong> of the list: only the listmasters can change this parameter.[%END%]</p> - <p>[%|helploc%]<strong>BE CAREFUL: do not forget to click on the 'Update' button</strong> on bottom of page to save all your changes.[%END%]</p> - - <h3><a name="sending"></a>[%|helploc%]Sending/receiving[%END%]</h3> - <p>[%|helploc%]From this page, you can <strong>decide who will be allowed to post messages on the list</strong>.[%END%]</p> - <p>[%|helploc%]In the '<strong>Digest frequency</strong>' area, you can define how frequently compiled messages are sent (Digest and Summary delivery modes): in the list, select all the <strong>days</strong> for which you want digests to be sent. Then choose a <strong>delivery time</strong> for digests (please avoid choosing a time between 11 p.m. and midnight).[%END%]</p> - <p>[%|helploc%]In the '<strong>Available subscription options</strong>' list, select all the subscriber options you want to offer to your subscribers. By default, all options are selected.[%END%]</p> - <p>[%|helploc%]The '<strong>Reply address</strong>' area allows you to define the default recipients of any reply to a message sent to the list:[%END%]</p> - <ul> - <li>[%|helploc%]With the '<strong>All</strong>' value, the reply is sent to both the <strong>message sender</strong> AND the <strong>list</strong>.[%END%]</li> - <li>[%|helploc%]With the '<strong>List</strong>' value, the reply is sent to the <strong>list</strong>.[%END%]<br /> - <p class="retraitita">[%|helploc%]Be careful: use this option carefully! Experience shows that subscribers do not always check the address to which they send their reply. Thus, they might send private messages to the whole list when trying to reply to a single person...[%END%]</p></li> - <li>[%|helploc%]With the '<strong>Other_email</strong>' value, the reply is sent to a <strong>predefined address</strong>. If you choose this option, you will have to <strong>indicate an email address in the 'Other email address' input box</strong>.[%END%]</li> - <li>[%|helploc%]With the '<strong>Sender</strong>' value, the reply is sent to the <strong>message sender</strong>. This is the option you should probably choose.[%END%]</li> - </ul> - <p>[%|helploc%]The '<strong>Respect of existing header field</strong>' drop-down list allows you to choose how the 'Reply-To' SMTP header field will be processed in incoming messages. The '<strong>Respect</strong>' option preserves that field while the '<strong>Forced</strong>' option allows it to be overwritten.[%END%]</p> - <p>[%|helploc%]Last, the '<strong>Subject tagging</strong>' option lets you choose the <strong>text included before the subject of all messages</strong> sent to the list: this allows subscribers to sort their messages easily, to use message filters on them in order to process messages automatically, etc. By default, this text consists of the <strong>list name surrounded by square brackets</strong> (the square brackets are automatically added by the system, thus it is useless that you add them yourself).[%END%]</p> - <p>[%|helploc%]<strong>BE CAREFUL: do not forget to click on the 'Update' button</strong> on bottom of page to save all your changes.[%END%]</p> - - <h3><a name="command"></a>[%|helploc%]Privileges[%END%]</h3> - <p>[%|helploc%]From this page, you can decide:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>who can view list information</strong>. The following options are available:[%END%] - <ul> - <li>[%|helploc%]for anyone (open) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]restricted to subscribers (private).[%END%]</li> - </ul></li> - <li><strong>[%|helploc%]who can subscribe to the list</strong>. The following options are available:[%END%] - <ul> - <li>[%|helploc%]subscription request confirmed (auth);[%END%]</li> - <li>[%|helploc%]need authentication (notification is sent to owners) (auth_notify);[%END%]</li> - <li>[%|helploc%]requires authentication then owner approval (auth_owner);[%END%]</li> - <li>[%|helploc%]subscribe is impossible (closed);[%END%]</li> - <li>[%|helploc%]restricted to local domain users (intranet);[%END%]</li> - <li>[%|helploc%]local domain users or owner approval (intranetorowner);[%END%]</li> - <li>[%|helploc%]for anyone without authentication (open) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]anyone, notification is sent to list owner (open_notify);[%END%]</li> - <li>[%|helploc%]anyone, no welcome message (open_quiet);[%END%]</li> - <li>[%|helploc%]owner approval (owner);[%END%]</li> - <li>[%|helploc%]requires S/MIME signed (smime);[%END%]</li> - <li>[%|helploc%]requires S/MIME signed or owner approval (smimeorowner).[%END%]<br /> - <span class="retraitita">[%|helploc%]You should always choose an option involving the 'auth' parameter: this way, the system requires confirmation from the future subscriber by email before subscribing him/her to the list. This avoids subscriptions with invalid email addresses and guarantees that no one can be subscribed to the list without knowing it.[%END%]</span></li></ul></li> - <li>[%|helploc%]<strong>who can unsubscribe from the list</strong>. The following options are available:[%END%] - <ul> - <li>[%|helploc%]need authentication (auth);[%END%]</li> - <li>[%|helploc%]authentication requested, notification sent to owner (auth_notify);[%END%]</li> - <li>[%|helploc%]impossible (closed);[%END%]</li> - <li>[%|helploc%]open (open) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]open with mail confirmation, owner is notified (open_notify);[%END%]</li> - <li>[%|helploc%]owner approval (owner).[%END%]<br /> - <p class="retraitita">[%|helploc%]You should always choose an option involving the 'auth' parameter: this way, the system requires confirmation from the subscriber by email before unsubscribing him/her from the list. This prevents ill-intentioned people from unsubscribing others without letting them know.[%END%]</p></li> - </ul></li> - <li><strong>[%|helploc%]who can invite people to subscribe to the list</strong>. The following options are available:[%END%] - <ul> - <li>[%|helploc%]closed (closed);[%END%]</li> - <li>[%|helploc%]list owner, no authentication (owner);[%END%]</li> - <li>[%|helploc%]restricted to subscribers (private) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]public (public).[%END%]</li> - </ul></li> - <li>[%|helploc%]<strong>who can review subscribers</strong>. The following options are available:[%END%] - <ul> - <li>[%|helploc%]no one can review (closed);[%END%]</li> - <li>[%|helploc%]restricted to subscribers or local domain users (intranet);[%END%]</li> - <li>[%|helploc%]listmaster only (listmaster);[%END%]</li> - <li>[%|helploc%]only owner (and listmaster) (owner) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]restricted to subscribers (private);[%END%]</li> - <li>[%|helploc%]anyone can do it! (public).[%END%]<br /> - <span class="retraitita">[%|helploc%]You should in no case make the members list accessible to anyone. The 'Restricted to subscribers' option may be interesting in order to allow subscribers to communicate with each others without posting messages on the list. However, this is not appropriate in the case of an announcement list involving subscribers having no particular relationship.[%END%]</span></li> - </ul></li> - </ul> - <p><a name="docsrights"></a>[%|helploc%]From this page, you can also <strong>define the access rights applying to the shared document web space</strong> ('Shared documents' section of the list, accessible through a link in the left menu). You can define both the read and write access rights for the documents: [%END%]</p> - <ul> - <li>[%|helploc%]The following options are available in the '<strong>Who can view</strong>' drop-down list:[%END%] - <ul> - <li>[%|helploc%]restricted to subscribers or local domain users (intranet);[%END%]</li> - <li>[%|helploc%]restricted to list owners (owner);[%END%]</li> - <li>[%|helploc%]restricted to subscribers (private) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]public documents (public).[%END%]</li> - </ul></li> - <li>[%|helploc%]The following options are available in the '<strong>Who can edit</strong>' drop-down list:[%END%] - <ul> - <li>[%|helploc%]restricted to list owners (owner) - <em>default option</em>;[%END%]</li> - <li>[%|helploc%]moderated for subscribers (editor);[%END%]</li> - <li>[%|helploc%]restricted to subscribers (private);[%END%]</li> - <li>[%|helploc%]public documents (public).[%END%]</li> - </ul></li> - </ul> - <p>[%|helploc%]The '<strong>Quota</strong>' input box allows you to define a <strong>maximum size not to be exceeded for the shared document web space</strong>. This size does not represent the maximum size of <em class="caps">one</em> document published in the shared document web space, but the maximum size for all documents published on the list. It is expressed in kilobytes. When a subscriber tries to publish a too large document regarding the space left, he/she gets an error message.[%END%]</p> - <p>[%|helploc(path_cgi)%]To know <strong>more about the management of the shared document web space</strong> (how to organize it, change access rights, name documents, etc.), please refer to the '<a href="%1/help/shared">Using the shared document web space</a>' section of the User guide.[%END%]</p> - <p>[%|helploc%]<strong>BE CAREFUL: do not forget to click on the 'Update' button</strong> on bottom of page to save all your changes.[%END%]</p> - - <h3><a name="archives"></a>[%|helploc%]Archive[%END%]</h3> - <p>[%|helploc%]From this page, you can <strong>decide who can access the online list archive</strong> (messages readable on the mailing list web interface). The following options are available:[%END%]</p> - <ul> - <li>[%|helploc%]closed (closed);[%END%]</li> - <li>[%|helploc%]restricted to local domain users (intranet);[%END%]</li> - <li>[%|helploc%]listmaster (listmaster);[%END%]</li> - <li>[%|helploc%]owner (owner);[%END%]</li> - <li>[%|helploc%]moderator (moderator);[%END%]</li> - <li>[%|helploc%]subscribers only (private);[%END%]</li> - <li>[%|helploc%]public (public).[%END%]</li> - </ul> - <p>[%|helploc%]The '<strong>Quota</strong>' input box allows you to define a <strong>maximum size not to be exceeded for the message archive</strong>. This size is expressed in kilobytes. List owners are notified when the archive size reaches 95 % of the allowed size. When the maximum size is reached, later messages are not archived.[%END%]<br /> - <p class="retraitita">[%|helploc%]Even though messages stop being archived, it is naturally still possible to send messages to the list.[%END%]</p> - <p>[%|helploc(conf.email,conf.host)%]It is also possible to <strong>access the list archive by email</strong>, by sending <strong>%1@%2</strong> the following command: <span class="commande"><strong>get nameofthelist log.yearmonth</strong></span> (example: <em class="example">get list_example log.200507</em>). Then you receive a compilation of all messages sent during the chosen month. This compilation is sent in plain text and contains <acronym lang="en" xml:lang="en" title="HyperText Markup Language">HTML</acronym> tags instead of the original formatting; it also involves full headers for each message. The '<strong>Text archives</strong>' parameter allows you to define:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>who is allowed</strong> to receive the list message archive by email;[%END%]</li> - <li>[%|helploc%]<strong>how frequently these archive files will be created</strong>. For example, if the frequency is set to 'month', all messages distributed to the list in a month will be gathered in a single archive file.[%END%]</li> - </ul> - <p>[%|helploc%]If this parameter is not defined, the list will have no archive accessible by email. Be careful: <strong>only the listmasters have the power to change this parameter.</strong>[%END%]</p> - <p>[%|helploc%]It is possible to send <strong>messages encrypted in <acronym lang="en" xml:lang="en" title="Secure/Multipurpose Internet Mail Extensions">S/MIME</acronym></strong> to the list. The '<strong>Archive encrypted mails as cleartext</strong>' option allows you to define how those messages will be archived:[%END%]</p> - <ul> - <li>[%|helploc%]The '<strong>Decrypted</strong>' option archives the message after removing the encryption.[%END%]</li> - <li>[%|helploc%]The '<strong>Original</strong>' option archives the message under its original encrypted form.[%END%]</li> - </ul> -<p class="retraita">[%|helploc%]This option applies to both the text archive and the online archive, as well as to the compilations sent to those who chose the 'Digest' delivery mode.[%END%]</p> - <p><strong>[%|helploc%]BE CAREFUL: do not forget to click on the 'Update' button</strong> on bottom of page to save all your changes.[%END%]</p> - - <h3><a name="bounces"></a>[%|helploc%]Bounces[%END%]</h3> - <p>[%|helploc%]"<strong>Bounces</strong>" represent the <strong>subscribers whose address is in error</strong>, i.e. subscribers who can not receive the messages sent to the list. This can be due to many reasons: obsolete email addresses, addresses temporarily unavailable when messages were sent, inbox quota exceeded, etc.[%END%]</p> - <p>[%|helploc%]The '<strong>Bounce management</strong>' section defines two rates:[%END%]</p> - <ul> - <li>[%|helploc%]The <strong>warn rate</strong> indicates the bouncing email addresses rate from which the list owner will receive a <strong>notice entitled 'Bounce rate too high'</strong> inviting him/her to delete bouncing subscribers from the list.[%END%]</li> - <li>[%|helploc%]The <strong>halt rate</strong> indicates the bouncing email addresses rate from which <strong>the message distribution will automatically be stopped</strong> up to the resolution of the problem (generally through the deletion of bouncing subscribers).[%END%]</li> - </ul> - <p><a name="bouncers"></a>[%|helploc%]The '<strong>Management of bouncers, 1st level</strong>' and '<strong>Management of bouncers, 2nd level</strong>' sections allow you to perform automatic tasks with regard to bouncing subscribers. You can define:[%END%]</p> - <ul> - <li>[%|helploc%]the <strong>score ranges that define level 1 and level 2 bouncers</strong>. By default, level 1 bouncers have a score comprised between 45 and 74 and level 2 bouncers have a score comprised between 75 and 100;[%END%]<br /> - <p class="retraitita">[%|helploc%]The score depends on the number, type and frequency of errors. If the bouncing time is too short or if there have not been many errors, the bouncer is not given a score.[%END%]</p></li> - <li>[%|helploc%]the <strong>task to perform towards the subscribers concerned</strong>: no task, notice, deletion from the list;[%END%]</li> - <li>[%|helploc%]the <strong>person to be notified</strong> when a task is carried out: no one, the list owners, the listmasters. The notice sent when a task is carried out involves the names of all the subscribers concerned as well as precise information about the task.[%END%]</li> - </ul> - <p>[%|helploc(path_cgi)%]<strong>To manage bounces</strong> (reset errors for some subscribers, unsubscribe bouncing subscribers, request a subscription reminder, etc.), <strong>go to the '<a href="%1/help/admin#manage_bounces">Bounces</a>' page</strong> of the list administration module.[%END%]</p> - <p><strong>[%|helploc%]BE CAREFUL: do not forget to click on the 'Update' button</strong> on bottom of page to save all your changes.[%END%]</p> - - <h3><a name="other"></a>[%|helploc%]Miscellaneous[%END%]</h3> - <p>[%|helploc%]The '<strong>Periodical subscription expiration task</strong>' option allows you to define an <strong>automatic expiration deadline for subscriptions</strong> to the list: on a regular basis (example: once a year), subscribers will receive a message asking them to renew their subscription to the list. If they don't, they will automatically be unsubscribed. This procedure ensures that all people subscribed to the list are really concerned and interested.[%END%]</p> - <p>[%|helploc%]The '<strong>Periodical subscription reminder task</strong>' option allows you to <strong>send subscription reminders</strong> to list members on a regular basis.[%END%]</p> - <p>[%|helploc%]The '<strong>email address protection method</strong>' option ensures that the subscribers' email addresses will not be collected by robots for spamming purposes. This option applies to all the list pages.[%END%]</p> - <p>[%|helploc%]On this page, you can also view <strong>information about the last update of the list</strong> (who made it and when), as well as the <strong>number of configuration change</strong> since the list was created.[%END%]</p> - <p>[%|helploc%]<strong>BE CAREFUL: do not forget to click on the 'Update' button</strong> on bottom of page to save all your changes.[%END%]</p> -<!-- end help_listconfig.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_mail_commands.tt2 b/sympa-6.1.20-src/web_tt2/help_mail_commands.tt2 deleted file mode 100644 index 3a22009bb8c6aee32e3eba5a02b36ab49272621a..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_mail_commands.tt2 +++ /dev/null @@ -1,73 +0,0 @@ -<!-- $Id: help_mail_commands.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - - <h2>[%|helploc%]List of the commands of the Sympa mail interface[%END%]</h2> - -<p>[%|helploc(conf.email ,conf.host)%]All commands are to be sent at %1@%2.[%END%]</p> - -<p>[%|helploc%]It is possible to send several commands in a single message. Commands are to be entered in the message body (one command per line).[%END%]</p> - - <h3>[%|helploc%]Commands for users[%END%]</h3> - -<p> -<dl> -<dd>[%|helploc%]<code>HELP</code>: receive a list of all available commands[%END%]</dd> -<dd>[%|helploc%]<code>LISTS</code>: receive a list of all lists managed on the server[%END%]</dd> -<dd>[%|helploc%]<code>WHICH</code>: receive a list of all lists to which you are subscribed[%END%]</dd> -<dd>[%|helploc%]<code>CONFIRM <em>key</em></code>: confirm sending of a message (according to the way the list is configured)[%END%]</dd> -<dd>[%|helploc%]<code>QUIT</code>: indicates the end of the commands (used to ignore a signature)[%END%]</dd> -</dl> - -<br/> - -<dl> -<dd>[%|helploc%]<code>INFO <em>list</em></code>: get information about the list[%END%]</dd> -<dd>[%|helploc%]<code>REVIEW <em>list</em></code>: receive a list of all list members[%END%]</dd> -<dd>[%|helploc%]<code>SUBSCRIBE <em>list name</em></code>: subscription (or subscription confirmation) to the list[%END%]</dd> -<dd>[%|helploc%]<code>INVITE <em>list email</em></code>: invite someone to subscribe to the list[%END%]</dd> -<dd>[%|helploc%]<code>UNSUBSCRIBE <em>list email</em></code>: unsubscribe from the list. The email address is required only if you want to unsubscribe with an address other than the address with which you send the message[%END%]</dd> -<dd>[%|helploc%]<code>UNSUBSCRIBE * <em>email</em></code>: unsubscribe from all the lists to which you are subscribed[%END%]</dd> -</dl> - -<br/> - -<dl> -<dd>[%|helploc%]<code>SET <em>list</em> NOMAIL</code>: suspend receipt of the list's messages[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> DIGEST</code>: receive messages in digest mode[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> DIGESTPLAIN</code>: receive messages in digest mode (plain text)[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> SUMMARY</code>: only receive the message list[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> NOTICE</code>: only receive the message subjects[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> MAIL</code>: normal message delivery mode[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> CONCEAL</code>: become unlisted (hidden subscriber address)[%END%]</dd> -<dd>[%|helploc%]<code>SET <em>list</em> NOCONCEAL</code>: subscriber address visible via REView[%END%]</dd> -</dl> - -<br/> - -<dl> -<dd>[%|helploc%]<code>INDEX <em>list</em></code>: receive the list of the archive files[%END%]</dd> -<dd>[%|helploc%]<code>GET <em>list file</em></code>: receive a file of the list archive[%END%]</dd> -<dd>[%|helploc%]<code>LAST <em>list</em></code>: receive the list's most recent message[%END%]</dd> -</dl> -</p> - - <h3>[%|helploc%]Commands for list owners[%END%]</h3> - -<p> -<dl> -<dd>[%|helploc%]<code>ADD <em>list email name</em></code>: add a member to the list[%END%]</dd> -<dd>[%|helploc%]<code>DEL <em>list email</em></code>: remove a subscriber from the list[%END%]</dd> -<dd>[%|helploc%]<code>STATS <em>list</em></code>: check the statistics for the list[%END%]</dd> -<dd><[%|helploc%]code>REMIND <em>list</em></code>: send to all subscribers a personalized reminder with the address with which he/she is subscribed to the list[%END%]</dd> -</dl> -</p> - - <h3>[%|helploc%]Commands for list moderators[%END%]</h3> - -<p> -<dl> -<dd>[%|helploc%]<code>DISTRIBUTE <em>list key</em></code>: approve of a message[%END%]</dd> -<dd>[%|helploc%]<code>REJECT <em>list key</em></code>: reject a message to be moderated[%END%]</dd> -<dd>[%|helploc%]<code>MODINDEX <em>list</em></code>: check the list of messages to be moderated[%END%]</dd> -</dl> -</p> -<!-- end help_mail_commands.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_sendmsg.tt2 b/sympa-6.1.20-src/web_tt2/help_sendmsg.tt2 deleted file mode 100644 index be20d9dc28d035eab868701b3a831f3c1427cdb6..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_sendmsg.tt2 +++ /dev/null @@ -1,54 +0,0 @@ -<!-- $Id: help_sendmsg.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - - <h3 class="block"><a name="sendmsg"></a>[%|helploc%]Sending a message[%END%]</h3> - <p>[%|helploc%]When you are subscribed to a list, you receive all messages subscribers send. You can reply to those messages or send some yourself.[%END%]</p> - - <h4>[%|helploc%]Sending a message with an email client[%END%]</h4> - <p>[%|helploc(conf.host)%]To send a new message, it is very simple: <strong>from your email client or a webmail, send a message to the list address</strong>. This address consists of the list name followed by the suffix '@%1' (example: <em class="example">psycho_cognitive(@)%1</em>).[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: you need to send the message from the address with which you subscribed to the list, otherwise, your message might be rejected.[%END%]</p> - - <h4>[%|helploc%]Sending a message from the mailing list environment[%END%]</h4> - <p>[%|helploc%]<strong>You can also</strong> log on to the mailing list environment, <strong>go to the information page of the list</strong> to which you want to send a message and <strong>click on the 'Post' link</strong> in the left menu.[%END%]</p> - <p class="retraitita">[%|helploc%]This method is not very flexible: from the mailing list web interface, you can not add or change some recipients, add an attachment or format the messages you send.[%END%]</p> - - <h4>[%|helploc%]Replying to a message[%END%]</h4> - <p>[%|helploc%]To reply to a message sent to a list, do as for any message that would have been sent to you in private. However, be careful: <strong>some lists are configured to send any reply to the list by default</strong>, i.e. to all the subscribers. If you only want to reply to the message sender, <strong>make sure the recipient of your message is the right one</strong>![%END%]</p> - <p>[%|helploc%]You can also reply to a message directly <a href="#answeronline">from the mailing list environment</a>. However, it is far simpler and more functional to reply using an email client or a webmail...[%END%]</p> - - <h4><a name="rulesuser"></a>[%|helploc%]A few rules[%END%]</h4> - <p>[%|helploc%]Sending messages to a list makes you liable as an author. Furthermore, if you send a message to a list, it will be read by all the subscribers and you are likely to strike up conversations with them. Thus, to use the mailing list service within the law and share pleasant and respectful exchanges, you have to respect a comprehensive set of rules.[%END%]</p> - - <h5>[%|helploc%]Before you start writing to a list[%END%]</h5> - <p>[%|helploc%]It is better to always <strong>respect an observation period</strong> of a few days after subscribing, prior to sending any message. This will allow you to gather useful information in order not to make a blunder:[%END%]</p> - <ul> - <li>[%|helploc%]Who can send messages to the list?[%END%]</li> - <li>[%|helploc%]How frequently can you send messages without disturbing the other subscribers?[%END%]</li> - <li>[%|helploc%]What are the topics discussed?[%END%]</li> - <li>[%|helploc%]Are off-topic messages tolerated?[%END%]</li> - <li>[%|helploc%]What is the tone used? Is it allowed to joke or is the list very formal?[%END%]</li> - <li>[%|helploc%]Is the sending of attachments allowed/tolerated? Within what limits?[%END%]</li> - </ul> - <p>[%|helploc%]<strong>Some lists require subscribers to introduce themselves to the other contributors</strong> at the time of their subscription, others on the first message sent to the list, and a third category (most generally the largest lists) consider this to be useless and annoying... Study the uses and take appropriate action![%END%]</p> - - <h5>[%|helploc%]Privacy[%END%]</h5> - <p>[%|helploc(path_cgi)%]All messages sent to the list are kept in the list archive. <strong>Thus, the simple fact of sending a message constitutes an express authorization of distribution and reproduction in the archive</strong>. However, you can request the deletion of any message you sent, whether directly from the list archive ('Tag this mail for deletion' button) or by <a href="%1/help/faquser#contactadmin">contacting the list owners</a>.[%END%]</p> - <p>[%|helploc%]If you send a message to the list, <strong>your email address will naturally display in your message header and in the list archive</strong>. However, unless otherwise specified, your email address and the other data you provided when you subscribed will not be disclosed to any other third party without your agreement.[%END%]</p> - <p class="retraitita">[%|helploc(path_cgi)%]In most countries, your personal data is protected through a number of laws. For example, in the United States, the Privacy Act of 1974 applies. In the European Union, the "Directive 95/46/EC of the European Parliament and of the Council of 24 October 1995 on the protection of individuals with regard to the processing of personal data and on the free movement of such data" and national laws arising from it apply. To know more about this, <a href="%1/help/faquser#contactadmin">please contact the list owners</a>.[%END%]</p> - <p>[%|helploc%]As for any correspondence, <strong>you must sign your messages</strong>. On professional mailing lists, <strong>it is customary to mention the name of the organization you belong to and your job title alongside your name</strong>. However, <strong>ask yourself whether it is relevant to give your complete details</strong> (address, telephone number, etc.): they will remain available at any time in the list archive...[%END%]</p> - <p>[%|helploc%]<strong>Do never send information about other people without their express agreement</strong>.[%END%]</p> - - <h5>[%|helploc%]Good practices[%END%]</h5> - <p>[%|helploc%]<strong>When asking a question on a list</strong>, it is customary to post a summary of all answers obtained.[%END%]</p> - <p>[%|helploc%]<strong>When you reply to a message sent on the list</strong>, it is up to you to decide whether you will reply on the list or in private. This might depend on the interest of your reply for the other subscribers...[%END%]</p> - <p>[%|helploc%]<strong>Always use descriptive subjects for your messages</strong>. On some lists, typical subjects for messages are even predefined and it is compulsory to "tag" messages using one of them (examples of typical objects: <em class="example">[summary]</em>, <em class="example">[urgent]</em>, <em class="example">[administrative]</em>, <em class="example">[question]</em>, etc.).[%END%]</p> - <p>[%|helploc%]<strong>Some kinds of messages are not welcome</strong> on mailing lists: advertisement, spamming, commercial messages, virus warnings, test messages, political or religious messages, hoaxes, flaming, privacy invasions, messages damaging, misleading or in any way defamatory, harassing, offensive, abusive, infringing, racist, obscene or profane, promoting discrimination, violence or hatred for any reason, contrary to good morals, or more generally illegal.[%END%]</p> - <p>[%|helploc%]<strong>Unconstructive and mean-spirited messages</strong> (example: remarks about spelling mistakes) <strong>and other personal attacks towards other contributors are either not welcome</strong> on lists. If you really need to tell unpleasant or offensive things to someone, you had better do it in a private message... On most of the mailing lists, <strong>it is also frowned on to feed the <em class="altralingua">trolls</em></strong> (topics or posts deliberately incorrect, intended to provoke readers).[%END%]</p> - <p>[%|helploc%]<strong>Generally, a list uses only one language</strong> for the exchanges between contributors. Respect this rule even though you are not a native speaker of the language used. <strong>Also try to respect the elementary rules of grammar and spelling</strong>, ban "<acronym lang="en" xml:lang="en" title="Short Message Service">SMS</acronym> language" and <strong>proofread yourself</strong> before posting your message![%END%]</p> - <p>[%|helploc%]When sending a message, <strong>you may want to add one or several attachments</strong>. However, be careful to respect a few elementary rules:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>Make sure that attachments are accepted</strong> on the list to which you send your message.[%END%]</li> - <li>[%|helploc%]When attachments are allowed, <strong>remain reasonable</strong>: too many or too large attachments may disturb the other subscribers, for example by flooding their inboxes.[%END%]</li> - </ul> - <p>[%|helploc(path_cgi)%]If you want to <strong>share documents with other list members</strong>, you had probably better upload them in the <a href="%1/help/shared">'Documents' section of the list</a>.[%END%]</p> - <p class="retraitita">[%|helploc%]<strong>The use of email in general and for mailing lists is bound by a set of precise rules necessary to share pleasant exchanges: the "Netiquette"</strong>. You will find the general principles of the Netiquette, as well as many links on the <a target="_blank" href="http://en.wikipedia.org/wiki/Netiquette">page of the Wikipedia dedicated to the Netiquette</a>.[%END%]</p> -<!-- end help_sendmsg.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_shared.tt2 b/sympa-6.1.20-src/web_tt2/help_shared.tt2 deleted file mode 100644 index 1322992313d97f8bcd87db3a2b004f47c2113783..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_shared.tt2 +++ /dev/null @@ -1,154 +0,0 @@ -<!-- $Id: help_shared.tt2 6014 2009-07-24 10:41:06Z david.verdin $ --> - - <h3 class="block"><a name="shared"></a>[%|helploc%]Using the shared document web space[%END%]</h3> - <p>[%|helploc%]Some lists have a <strong>shared document web space where subscribers can download and upload documents</strong>: this space is available through the <strong>'Shared documents' section</strong>.[%END%]</p> - - <h4>[%|helploc%]Presentation of the documents in the shared document web space[%END%]</h4> - <p>[%|helploc%]To access the 'Shared documents' section of a list, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]Go to <strong>the information page of the list</strong> of your interest.[%END%]</li> - <li>[%|helploc%]In the left menu, <strong>click on the 'Shared documents' link</strong>.[%END%]</li> - </ol> - - <p><strong>[%|helploc%]The 'Shared documents' section can contain three types of resources</strong>: <strong>folders</strong>, <strong>files</strong> and <strong>bookmarks</strong>.[%END%]</p> - <ul> - <li>[%|helploc(icons_url)%]<strong>Folders</strong> are preceded by the icon <img src="%1/folder.png" style="border: 0px;" title="Icon of folder" />.[%END%] - <ul> - <li>[%|helploc%]<strong>To browse a folder, click on its name</strong>.[%END%]</li> - <li>[%|helploc%]<strong>To go back up a level, click on the 'Up to higher level directory' link</strong> in the upper right corner of your screen.[%END%]</li> - </ul></li> - <li>[%|helploc%]<strong>Files</strong> are preceded by icons related to each type of file. You can <a href="#shared_read">download</a> and <a href="#shared_upload">upload</a> some.[%END%]</li> - <li>[%|helploc(icons_url)%]<strong>Bookmarks</strong> are preceded by the icon <img src="%1/link.png" style="border: 0px;" title="Icon of bookmark" />. They consist of <strong>shortcuts providing a single-click access to a particular website</strong>. If you click on a bookmark label, the website linked will open in a new window.[%END%]</li> - </ul> - - <p>[%|helploc%]The functions of editing and creation of documents, when they are available to you, are accessible through the <strong>Expert mode</strong>. To switch to expert mode, click on the <a class="actionMenuLinks">Expert mode</a> button on top of page.[%END%]</p> - - <p>[%|helploc%]<strong>The list owner or the documents authors can choose to restrict the access rights to some files/folders</strong>. Both the reading and writing rights can be restricted:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>When a folder is not writable</strong>, you can neither upload nor create documents in it.[%END%]</li> - <li>[%|helploc%]<strong>When a folder is not readable</strong>, you can not browse it (you get an error message).[%END%]</li> - </ul> - <p>[%|helploc%]<strong>Folders are sorted separately</strong> from files and bookmarks, and display before them. <strong>By default, documents are sorted ascendingly according to the 'Document' column</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]Be careful: alphanumeric sort distinguishes uppercase from lowercase, thus all documents which have a name starting with an uppercase character display first, sorted in alphabetical order, and then, all documents which have a name starting with a lowercase character, sorted in alphabetical order. It is the same for folders.[%END%]</p> - <p><strong>[%|helploc%]You can sort documents and folders according to criteria</strong> other than the name of the document/folder: they can also be sorted according to their <strong>author</strong>, their <strong>size</strong> and their <strong>last update date</strong>. To sort documents according to the criterion of your choice, click on the name of the corresponding column.[%END%]</p> - - - <h4><a name="shared_read"></a>[%|helploc%]Downloading documents from the shared document web space[%END%]</h4> - <p>[%|helploc%]To download a document from a list, do as follows:[%END%]</p> - <ol> - <li>[%|helploc%]<strong>Go to the 'Shared documents' section</strong> of the list of your interest.[%END%]</li> - <li>[%|helploc%]<strong>Browse the folder containing the file you want to download</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Select the 'expert mode'</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Click on the name of the file to save it on your hard disk</strong>.[%END%]<br /> - <p class="retraitita">[%|helploc%]Be careful: files available in formats likely to open in a web browser will. To download this type of files, you had rather make a right click on their names and choose 'Save target as...', 'Save link as...', etc., according to your browser. This can affect, among others, files of formats .HTM/HTML, .PDF, .PNG, .TXT, .SWF, etc. (this behavior varies according to your browser and settings).[%END%]</p></li> - </ol> - - <h4><a name="shared_upload"></a>[%|helploc%]Uploading documents in the shared document web space[%END%]</h4> - - <h5>[%|helploc%]Creating a folder on a list[%END%]</h5> - <p><strong>[%|helploc%]To create a folder on a list</strong>, do as follows:[%END%]</p> - <ol> - <li><strong>[%|helploc%]Go to the 'Shared documents' section</strong> of the list of your interest.[%END%]</li> - <li><strong>[%|helploc%]Browse the folder in which you want to create a folder</strong>.[%END%]</li> - <li><strong>[%|helploc%]Switch to expert mode</strong>.[%END%]</li> - <li><strong>[%|helploc%]Enter the folder name</strong> in the text field close to the 'Create a new folder inside [name of the current folder]' label.[%END%]</li> - <li><strong>[%|helploc%]Click on the 'Create' button</strong>.[%END%]</li> - </ol> - - <h5>[%|helploc%]Uploading a file on a list[%END%]</h5> - <p>[%|helploc%]<strong>To upload a file on a list</strong>, do as follows:[%END%]</p> - <ol> - <li>[%|helploc%]<strong>Go to the 'Shared documents' section</strong> of the list of your interest.[%END%]</li> - <li>[%|helploc%]<strong>Browse the folder in which you want to upload your file</strong>. Create a new folder if necessary.[%END%]</li> - <li>[%|helploc%]<strong>Switch to expert mode</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Click on the 'Browse' button</strong> below the 'Upload a file inside the folder [name of the current folder]' label and <strong>choose the file</strong> you want to upload; after selecting it, click on the 'Open' button. Your file path then displays in the input box close to the 'Browse' button.[%END%]</li> - <li>[%|helploc%]<strong>Click on the 'Publish' button</strong>.[%END%]</li> - </ol> - <p>[%|helploc%]Be careful: list owners may define quotas, that is to say a <strong>maximum size not to be exceeded for the shared document web space</strong>. If you try to upload or create a too large document with regard to the space left, you will get the following error message: "The document repository exceed disk quota".[%END%]</p> - - <p>[%|helploc%]In order to avoid any list overload, try and <strong>delete useless files as you go along</strong>. A good <a href="#organize">organization</a> of the list will allow you to manage the shared document web space more easily. To save some space, you can also publish your files in <strong>compressed formats</strong>.[%END%]</p> - - <h5>[%|helploc%]Publishing a bookmark on a list[%END%]</h5> - <p>[%|helploc%]<strong>To publish a bookmark on a list</strong>, do as follows:[%END%]</p> - <ol> - <li>[%|helploc%]<strong>Go to the 'Shared documents' section</strong> of the list of your interest.[%END%]</li> - <li>[%|helploc%]<strong>Browse the folder in which you want to publish your bookmark</strong>. Create a new folder if necessary.[%END%]</li> - <li>[%|helploc%]<strong>Switch to expert mode</strong>.[%END%]</li> - <li>[%|helploc%]In the <strong>'title' field</strong>, enter a <strong>descriptive name</strong> for the website to be linked through the bookmark.[%END%]</li> - <li>[%|helploc%]In the <strong>'<acronym title="Uniform Resource Locator" lang="en" xml:lang="en">URL</acronym>' field</strong>, enter or paste the website's <strong><acronym title="Uniform Resource Locator" lang="en" xml:lang="en">URL</acronym></strong>.[%END%]</li> - <li>[%|helploc%]Click on the <strong>'Add'</strong> button.[%END%]</li> - </ol> - - <h5>[%|helploc%]Creating a file on a list[%END%]</h5> - - <p><strong>[%|helploc%]To create a file on a list</strong>, do as follows:[%END%]</p> - <ol> - <li>[%|helploc%]<strong>Go to the 'Shared documents' section</strong> of the list of your interest.[%END%]</li> - <li>[%|helploc%]<strong>Browse the folder in which you want to create your file</strong>. Create a new folder if necessary.[%END%]</li> - <li>[%|helploc%]<strong>Switch to expert mode</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Enter a file name</strong> in the input box close to the 'Create a new file' label.[%END%]</li> - <li>[%|helploc%]<strong>Click on the 'Create' button</strong>.[%END%]</li> - </ol> - <p>[%|helploc%]You are brought to the file creation page.[%END%]</p> - - <p>[%|helploc%]<strong>Enter or paste the text</strong> you want to put in your file in the 'Edit the file /nameofthefile' text area, and then <strong>click on the 'Publish' button</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]<strong>Important: the only files that can be created online on the lists are plain text files. On the other hand, it is impossible to create office documents (.DOC, .XLS, .PPT, .RTF, .ODT, etc.), .PDF, images, etc.</strong>[%END%]</p> - <p>[%|helploc%]You can also <strong>replace the file, describe it or rename it</strong>. To know more about these features, refer to the <a href="#editsuppr">'Editing or deleting documents in the shared document web space'</a> section.[%END%]</p> - - <h4><a name="editsuppr"></a>[%|helploc%]Editing or deleting documents in the shared document web space[%END%]</h4> - <p>[%|helploc%]In addition to uploading and downloading documents, you can also act on files and folders that are already online:[%END%]</p> - <ul> - <li>[%|helploc%]by changing their access rights (read and write);[%END%]</li> - <li>[%|helploc%]by editing them;[%END%]</li> - <li>[%|helploc%]by deleting them.[%END%]</li> - </ul> - - <h5><a name="acces"></a>[%|helploc%]Changing access rights[%END%]</h5> - <p>[%|helploc%]<strong>You can change read and/or write access rights to folders and files</strong>. This has <strong>several advantages</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>Denying write access to a folder</strong> avoids proliferation of files published by unauthorized persons. To keep control of the list, sometimes it is more sensible to deny write access to the root folder of the shared document web space. It is also possible to offer a writable folder and to lock it at a given date or time, for example to control delivery of works by students.[%END%]</li> - <li>[%|helploc%]<strong>Denying write access to a file</strong> ensures that no one will be able to modify it. For example, this is the most suitable option for teachers willing to put at their students' disposal a set of documents, such as exam questions.[%END%]</li> - <li>[%|helploc%]<strong>Denying read access to a folder</strong> makes it possible to store several confidential documents without having to change read access rights individually for each of them.[%END%]</li> - <li>[%|helploc%]<strong>Denying read access to a file</strong> ensures its confidentiality. For example, a teacher can ask his/her students to upload their "exam copies" on a list and to restrict read access to their files in order to prevent other students from looking at them.[%END%]</li> - </ul> - <p>[%|helploc%]<strong>You are allowed to change access rights only to documents you uploaded or created yourself</strong> on the lists (one exception: list owners can change access rights to any document published on the lists; this does not concern moderators).[%END%]</p> - <p>[%|helploc%]<strong>To change access rights for a document, click on the 'Access' text</strong> in front of the document's name, in the 'Access' column. You are brought to the access rights editing page.[%END%]</p> - - <p>[%|helploc%]<strong>Choose options from the drop-down lists 'Read access' and 'Edit access'</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]Though it isn't mentionned in any of the options, note that the document owner (most of the time the person that published it) keeps the write and read rights on this document whatever happens (unless the list owner changes the document owner).[%END%]</p> - <p>[%|helploc%]<strong>You can also change the document's owner</strong>, for example to allow another person to edit it online, or to indicate the actual author of a document if it has been published by someone else.[%END%]</p> - - <h5>[%|helploc%]Editing folders, files or bookmarks[%END%]</h5> - <p>[%|helploc%]<strong>To edit a document, click on the 'Edit' text</strong> in front of the document's name in the 'Edit' column.[%END%]</p> - - <p>[%|helploc%]According to the type of document you edit, you have different possibilities:[%END%]</p> - <ul> - <li>[%|helploc%]If the document is a <strong>folder</strong>, you can only <strong>describe</strong> it or <strong>rename</strong> it.[%END%]<br /> - <p class="retraitita">[%|helploc%]The description of a document is visible in the upper left corner when editing it. The description of folders is also visible there when browsing the folder.[%END%]</p></li> - <li>[%|helploc%]If the document is a <strong>bookmark</strong>, you can also <strong>change the <acronym title="Uniform Resource Locator" lang="en" xml:lang="en">URL</acronym> specified</strong>.[%END%]</li> - <li>[%|helploc%]If the document is a <strong>file</strong>, you can also <strong>replace the existing file with a file of your choice</strong>. To do that, <strong>click on the 'Browse' button</strong> below the 'Replace the file nameofthefile with your file' text and <strong>choose the file</strong> you want to publish; after selecting it, click on the 'Open' button. Your file path then displays in the input box close to the 'Browse' button. <strong>Click on the 'Publish' button</strong>.[%END%]<br /> - <p class="retraitita">[%|helploc%]Whatever the name of the new file, the file published on the list will keep its original name. If you want the file replacement to be followed by a change of name, you will also have to rename the file published on the list.[%END%]</p></li> - <li>[%|helploc%]Last, if the document is a <strong>plain text file</strong>, you can <strong>change its content online</strong>: <strong>enter or paste the text</strong> you want to put in your file in the 'Edit the file /nameofthefile' text area, and then <strong>click on the 'Publish' button</strong>.[%END%]</li> - </ul> - <p>[%|helploc%]Any click on a button related to an input box only validates the changes specified in that box. <strong>To make several changes, you need to click on each button corresponding to your choices</strong>.[%END%]</p> - <p>[%|helploc%]Some buttons immediately bring you back to the page of the folder containing the document, while others perform the update without bringing you to another page. <strong>To go back to the folder page without changing anything, click on the 'Up to higher level directory' button</strong>.[%END%]</p> - - <h5>[%|helploc%]Deleting folders, files or bookmarks[%END%]</h5> - <p>[%|helploc%]<strong>To delete any type of document, click on the 'Delete'</strong> text in front of the document's name in the 'Delete' column. A confirmation message displays in order to let you go back on your decision: <strong>once deleted, the document will not be retrievable anymore</strong>.[%END%]</p> - <p class="retraitita">[%|helploc%]If there is no 'Delete' text in front of the document's name, you do not have write access rights to the document.[%END%]</p> - <p>[%|helploc%]<strong>It is impossible to delete a folder which still contains documents</strong>: before deleting a folder, you need to empty it entirely first.[%END%]</p> - - <h4><a name="organize"></a>[%|helploc%]A few tips to organize the shared document web space[%END%]</h4> - <p>[%|helploc%]If you are one of the people likely to organize the list and create files and folders, <strong>be far-sighted: think that the list will maybe develop in a considerable manner and that it will maybe be used for several years</strong>.[%END%]</p> - <p>[%|helploc%]Here are <strong>a few suggestions to prevent a list from developing in an anarchic manner</strong>:[%END%]</p> - <ul> - <li>[%|helploc%]If the list is to contain the same kinds of resources at regular intervals, choose an <strong>organization by month or by year</strong> (or any other duration according to your needs).[%END%]<br /> - <p class="retraitita">[%|helploc%]Example: if the list is meant to collect student works, those students will attend the same lessons and make the same works from a year to another. Thus, it might be interesting to create a folder for each academic year at the root of the shared document web space: this will allow students to take a look at the previous year's works and lessons (provided that teachers <a href="#acces">restrict access</a> to sensitive resources). This can be completed by subfolders for each lesson or each teacher within each year folder.[%END%]</p></li> - <li>[%|helploc%]If the list is a collaborative list destined to all members of a department, you had better choose a <strong>project-based organization</strong>.[%END%]</li> - <li>[%|helploc%]If the list aims at exchanging information, choose a <strong>topic-based organization</strong>.[%END%]</li> - <li>[%|helploc%]You can also choose an <strong>organization by person, by team, etc.</strong>, and even <strong>combine all those solutions</strong>![%END%]</li> - </ul> - <p>[%|helploc%]In order to avoid problems, <strong>choose carefully the names of files and folders</strong> you publish on lists: give them <strong>explicit yet short names</strong> and <strong>avoid spaces, accents, hyphens and special characters</strong>.[%END%]</p> - -<!-- end help_shared.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_user.tt2 b/sympa-6.1.20-src/web_tt2/help_user.tt2 deleted file mode 100644 index 17170f4fcf69197722393070e373f953a4a32033..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_user.tt2 +++ /dev/null @@ -1,182 +0,0 @@ -<!-- $Id: help_user.tt2 7328 2012-04-18 02:05:34Z sikeda $ --> - - <h2 class="block">[%|helploc%]Mailing lists - User Guide[%END%]</h2> - - <h3><a name="howitworks"></a>[%|helploc%]How the mailing list service works[%END%]</h3> - <p>[%|helploc%]The mailing-list service is managed by a <strong>mailing-list software: Sympa</strong>. This software comes with a <strong>web mailing list environment</strong>.[%END%]</p> - <p><strong>[%|helploc%]To perform actions related to mailing lists</strong> (subscribe, change your options, etc.), you have two options:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>log on to the web environment</strong>;[%END%]</li> - <li>[%|helploc(conf.email,conf.host)%]<strong>send commands by email</strong> to the Sympa mailing list manager at <strong>%1@%2</strong>.[%END%]</li> - </ul> - <p>[%|helploc%]<strong>To send a command to Sympa</strong>, do as follows:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>If you send a single command</strong>, type it into the subject line of your email and leave its body blank.[%END%]</li> - <li>[%|helploc%]<strong>If you send several commands</strong>, leave the subject line of your email blank and type all the commands in the email body. <strong>Be careful</strong>: Sympa will not process your message unless you respect the following rules:[%END%] - <ul> - <li>[%|helploc%]Write every command on a new line.[%END%]</li> - <li>[%|helploc%]Send your message in plain text, not in <acronym lang="en" xml:lang="en" title="HyperText Markup Language">HTML</acronym> (no formatting).[%END%]</li> - <li>[%|helploc%]Your message can not contain anything else than Sympa commands (no signature block).[%END%]</li> - </ul></li> - </ul> - - <p>[%|helploc(path_cgi)%]A description of all the commands you can send to Sympa is available at <a href="%1/help/mail_commands">%1/help/mail_commands</a>.[%END%]</p> - - <h3><a name="subscribe"></a>[%|helploc%]Subscribing to mailing lists[%END%]</h3> - <p>[%|helploc%]Subscribing to a mailing list is very simple:[%END%]</p> - <ol> - <li><strong>[%|helploc%]Choose the address</strong> with which you want to subscribe to the list.[%END%]<br /> - <p class="retraitita">[%|helploc%]You should choose an address you can check frequently and which offers a large storage capacity for your email: some lists distribute many messages, which sometimes contain large attachments.[%END%]</p> - <p class="retraitita">[%|helploc%]Of course you can subscribe to the same list with several email addresses. Then you will need to redo the whole process with a different email address.[%END%]</p></li> - <li>[%|helploc(conf.email,conf.host)%]Send a <strong>message to %1@%2</strong> from the address you want to subscribe to the list.[%END%]<br /> - <p class="retraitita">[%|helploc%]Sympa is not a person but a mailing list management robot. Thus it is useless to send it loving words! ;-)[%END%]</p></li> - <li>[%|helploc%]In the subject line of your message, type in: <strong>subscribe nameofthelist Firstname Name</strong> (replace 'nameofthelist' by the name of the list you want to subscribe to and indicate your own first name and name).[%END%]</li> - <li>[%|helploc%]<strong>Leave the message body blank</strong>.[%END%]<br /> - <p class="retraitita">[%|helploc%]To save some time, you can also send several commands in a single message. To do that, follow the instructions available in the <a href="#howitworks">How the mailing list service works</a> section.[%END%]</p></li> - </ol> - - <p>[%|helploc(conf.host)%]<strong>After this, you will receive a message telling you whether your request was accepted or not</strong>: if the subscription to the list is subject to any approval, the list owner may choose not to subscribe you. If so, do not send several other requests: it is useless as the result will remain the same. You can possibly send a message directly to the list owner (nameofthelist-request@%1) to explain why you really want to subscribe to the list...[%END%]</p> - <p class="retraitita">[%|helploc%]Note: you will sometimes be asked to confirm your subscription request before it can be processed. If so, please conform to the instructions contained in the message you receive.[%END%]</p> - <p>[%|helploc%]According to the type of list (list with subscription subject to conditions or not) and to the availability of the list owner, <strong>you may not receive the notice immediately</strong>. It is useless to send several requests.[%END%]</p> - <p>[%|helploc%]<strong>If your request is accepted, the message you receive confirms your subscription to the list. This message</strong> (the list Charter) <strong>contains several pieces of essential information:</strong>[%END%]</p> - <ul> - <li>[%|helploc%]your <strong>list password</strong>. This password is the same for all the lists you subscribed to with a single email address. You can <a href="#global_pref" title="How to change your password">change it online</a> after logging on to the mailing list environment;[%END%]</li> - <li>[%|helploc%]<strong>detailed information about the list</strong>: its purpose, the Internet address at which the message archive is available, etc.[%END%]</li> - <li>[%|helploc%]the <strong>rules applying to the list and its members</strong>: allowed and forbidden topics, netiquette, legal information, privacy policy, etc.[%END%]</li> - </ul> - <p>[%|helploc%]<strong>You should keep your subscription notice</strong>: you may need it later to remember your password or to send a precise command to Sympa (example: signoff command). More generally, <strong>we advise you to keep all your subscription notices to mailing lists</strong>.[%END%]</p> - <p>[%|helploc%]<strong>You can also subscribe to a list through the mailing list web interface</strong>. To do that, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Go to the information page of the list</strong> you want to subscribe to.[%END%]</li> - <li>[%|helploc%]In the left menu, <strong>click on the 'Subscribe'</strong> link.[%END%]</li> - </ol> - - <h3><a name="sympa_auth"></a>[%|helploc%]Logging on to the mailing list environment[%END%]</h3> - <p>[%|helploc%]To log on to the mailing list environment, use the authentication form displayed on top of the left column of the web interface. When you are logged on, your email address and user profile (subscriber, moderator or owner) are displayed there.[%END%]</p> - - <p>[%|helploc%]The authentication process varies according to your personal situation:[%END%]</p> - <ul> - <li>[%|helploc%]<strong>If the organization offering the mailing list service uses single sign-on technology</strong> (unique account and unique authentication, for example through the <acronym lang="en" xml:lang="en" title="Central Authentication Service">CAS</acronym> system), you will preferably log on with your unique account. To do that, click on the 'Go' button next to the text '<strong>Authentication [name of the system used]</strong>'. Then, type in your login and password to log on to the authentication server.[%END%]<br /> - <p class="retraitita">[%|helploc%]If you have already logged on to another service using the unique authentication system, your authentication is automatic. Refresh page if necessary.[%END%]</p> - <li>[%|helploc%]<strong>If the unique authentication process does not apply to you, you can use your list password.</strong> In this case, log on through the classic method: enter the <strong>email address with which you subscribed to the list</strong> as a login and your <strong>list password</strong> in the 'Password' field.[%END%]</li> - <p class="retraitita">[%|helploc%]If you do not remember your list password, click on 'Lost password?'. After you've provided your email address, a mail with a validation URL will be sent at that address.[%END%]</p> - - <li>[%|helploc%]<strong>If the unique authentication process does not apply to you and you do no have a list password yet</strong>, click on '<strong>First login?</strong>' and type in your email address. A confirmation URL will be sent at that address. Then you will be able to choose your password.[%END%]</li> - - </ul> - <p class="retraitita">[%|helploc%]Remember: the list password is a special password you will only use for the mailing list service.[%END%]</p> - - <h3>[%|helploc%]Checking your subscriptions[%END%]</h3> - <p>[%|helploc%]To see all the lists you subscribed to, you need to <a href="#sympa_auth">log on</a> first. Then a list of all your lists, including a short description for each of them, will be displayed in the 'Your lists' form on the left column.[%END%]</p> - - <p>[%|helploc%]<strong>To look at a list information page, click on its name</strong>. The information page includes a description of the list (object, rules applying when sending a message, etc.), which length varies according to the list.[%END%]</p> - <p>[%|helploc%]Form this information page, you can:[%END%]</p> - <ul> - <li>[%|helploc%]change your <a href="#options">subscriber options</a>;[%END%]</li> - <li>[%|helploc(path_cgi)%]read the <a href="%1/help/arc">list archive</a>;[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/arc#arcsearch">search in the message archive</a>;[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/sendmsg">send new messages</a>;[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/shared#shared_read">download documents</a> from the shared document web space;[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/shared#shared_upload">upload documents</a> in the shared document web space;[%END%]</li> - <li>[%|helploc%]<a href="#subscribers">review members</a> of the list (if available);[%END%]</li> - <li>[%|helploc(path_cgi)%]<a href="%1/help/suspend">suspend or resume</a> your subscription of each list;[%END%]</li> - <li>[%|helploc%]<a href="#unsubscribe">unsubscribe</a> from the list.[%END%]</li> - </ul> - <p><a name="subscribers"></a>[%|helploc%]The <strong>number of people subscribed</strong> to the list is permanently displayed in the <strong>left menu</strong>. <strong>To review the list members, click on the 'Review members' link</strong> in the left menu (if the list-owner decided to deny access to the members list, this link is not available). The subscribers list displays and shows the <strong>email address</strong> and <strong>name</strong> of each of the subscribers (the indication of the name depends on the subscription method used by the subscribers).[%END%]</p> - <p class="retraitita">[%|helploc%]By default, each page displays 25 subscribers. You can browse through the pages by using the browsing arrows or display more subscribers per page. You may also wish to sort subscribers according to their email address, domain or name by clicking on the corresponding column header.[%END%]</p> - <p>[%|helploc(conf.host)%]<strong>The names of the list owners and moderators are displayed in the left menu</strong>. You should never write directly to a list owner or moderator. If you want to ask a question or make a comment, you should use the following address: <strong>nameofthelist-request@%1</strong> (replace 'nameofthelist' by the name of the list in question).[%END%]</p> - <p>[%|helploc%]To know <strong>when you subscribed to the list</strong> and <strong>when you last updated your subscriber options</strong>, <strong>click on the 'Subscriber options' link</strong> in the left menu.[%END%]</p> - - <h3><a name="pref"></a>[%|helploc%]Managing your preferences[%END%]</h3> - <p>[%|helploc%]To allow you to <strong>use lists more easily</strong>, <strong>you can define a number of personal preferences</strong>. There are two types of preferences you can change:[%END%]</p> - <ul> - <li>[%|helploc%]your <strong>subscriber options</strong>, which can vary according to the list;[%END%]</li> - <li>[%|helploc%]your <strong>general preferences</strong>, which apply to the entire Sympa mailing list environment.[%END%]</li> - </ul> - - <h4><a name="options"></a>[%|helploc%]Changing your subscriber options[%END%]</h4> - <p>[%|helploc%]<strong>Your subscriber options can vary from a list to another</strong>. To change them, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Go to the information page of the list</strong> for which you want to change your subscriber options.[%END%]</li> - <li>[%|helploc%]In the left menu, <strong>click on the 'Subscriber options' link</strong>.[%END%]</li> - <li><a name="deliverymode"></a><[%|helploc%]strong>Choose a message delivery mode</strong> (those options are mutually exclusive, thus you can not select several of them):[%END%] - <ul> - <li>[%|helploc%]<strong>digest MIME format</strong>: instead of receiving the list messages in a normal manner, you will get a digest of them on a regular basis. This digest compiles a group of messages from the list, using multipart/digest <acronym lang="en" xml:lang="en" title="Multipurpose Internet Mail Extension">MIME</acronym> format. The digest frequency is set up by the list owner.[%END%]</li> - <li>[%|helploc%]<strong>digest plain text format</strong>: instead of receiving the list messages in a normal manner, you will get a digest of them on a regular basis. This digest compiles a group of messages from the list, using plain text format. The digest frequency is set up by the list owner.[%END%]</li> - <li>[%|helploc%]<strong>summary mode</strong>: instead of receiving the list messages in a normal manner, you will get a list of them on a regular basis. To read the messages, you will need to browse the online list archive.[%END%]</li> - <li>[%|helploc%]<strong>notice mode</strong>: with this mode, you will receive all the messages with a blank body: this way you are informed of every message sent to the list real time, without risk of flooding your inbox.[%END%]</li> - <li>[%|helploc%]<strong>no mail (useful for vacations)</strong>: this mode makes it possible not to receive the messages of the list. It is especially useful when you have no access to your email for a long time and want to remain subscribed to the list nevertheless.[%END%]</li> - <li>[%|helploc%]<strong>text only mode</strong>: this mode allows you to receive only the text version (text/plain) of messages sent in both formats (plain text and <acronym lang="en" xml:lang="en" title="HyperText Markup Language">HTML</acronym>).[%END%]</li> - <li>[%|helploc%]<strong>HTML only mode</strong>: this mode allows you to receive only the <acronym lang="en" xml:lang="en" title="HyperText Markup Language">HTML</acronym> version (text/html) of messages sent in both formats.[%END%]</li> - <li>[%|helploc%]<strong>urlize mode</strong>: this mode allows you not to receive attached documents. However these documents are available in the list archive and you can access them through a <acronym title="Uniform Resource Locator" lang="en" xml:lang="en">URL</acronym> provided in the message.[%END%]</li> - <li>[%|helploc%]<strong>you do not receive your own posts</strong>: this mode allows you not to receive a copy of your own messages.[%END%]</li> - <li>[%|helploc%]<strong>standard (direct reception)</strong>: this mode is the default delivery mode; it cancels any other delivery mode.[%END%]</li> - <li>[%|helploc%]<strong>suspended</strong>: this mode allows you to suspend your subscription to one or more lists for a specified period or not. Unlike unsubscription, you can keep track of your subscription and reactivate it at any time by visiting the "Manage your subscription" section.[%END%]</li> - </ul></li> - <li>[%|helploc%]<strong>Choose a visibility option</strong>:[%END%] - <ul> - <li>[%|helploc%]<strong>listed in the list review page</strong>: your name and email address will be displayed in the members list (if the list owner allowed subscribers to review the list members).[%END%]</li> - <li>[%|helploc%]<strong>concealed</strong>: your name and email address will not be displayed in the members list. However you email address will be visible in the list archive if you send messages.[%END%]</li> - </ul></li> - <li>[%|helploc%]<strong>Click on the 'Update' button</strong>.[%END%]</li> - </ol> - - <h4><a name="global_pref"></a>[%|helploc%]Changing your general preferences[%END%]</h4> - <p>[%|helploc%]The general preferences apply to all your subscriptions as well as to the way your Sympa mailing list web interface displays. To change your preferences, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]In the form displayed on top of the left column, <strong>click on the 'Your preferences' link</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Change your preferences</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Click on 'Submit' for every option</strong> you change.[%END%]</li> - </ol> - <p>[%|helploc%]You can change:[%END%]</p> - <ul> - <li>[%|helploc%]your <strong>name</strong>; if you subscribe to a list from the mailing list server web interface, the 'Name' field will automatically be filled in in the members list;[%END%]</li> - <li>[%|helploc%]the <strong>language in which the Sympa web interface is displayed</strong> (you can change language on every page of the web interface; your choice will remain even though you change the interface language on another page than the 'Preferences' page;[%END%]</li> - <li>[%|helploc%]the <strong>lifetime of the cookie placed on your computer by Sympa</strong> ('Connection expiration period'). By default, the session expires when you close your browser; if you use the mailing list service a lot, we advise you to choose a longer duration;[%END%]<br /> - <p class="retraitita">[%|helploc%]A cookie is a small file a web server stores on your hard disk, most generally temporarily, in order to identify you as a user of its service. It contains a few pieces of personal information about you: name, email address, latest logon time, etc.[%END%]</p></li> - <li>[%|helploc%]the <strong>email address with which you subscribed</strong> to the lists (if you subscribed with several email addresses, the address to be replaced will be the one you logged on with);[%END%]<br /> - <p class="retraitita">[%|helploc%]Be careful: this will change your subscriptions to all your lists. If you want to change address for a single mailing list, you had better unsubscribe from that list and subscribe again with the right email address.[%END%]</p></li> - <li>[%|helploc%]your <strong>list password</strong>.[%END%]</li> - </ul> - <p>[%|helploc%]The '<strong>Your other email addresses</strong>' section acts like an email address change.[%END%]</p> - - <h3>[%|helploc%]Searching for a mailing list[%END%]</h3> - <p>[%|helploc%]You may need to search for a mailing list. To do that, you have three options:[%END%]</p> - <ul> - <li>[%|helploc(path_cgi)%]<strong>browse the different sections</strong> displayed on the <a href="%1/home">list environment homepage</a>;[%END%]</li> - <li>[%|helploc%]search for a list via the <strong>search box</strong>: the searched string will return all the lists whose name or description matches your search criteria (descriptions of the lists generally consist of a short sentence);[%END%]</li> - <li>[%|helploc(path_cgi)%]click on the '<a href="%1/lists">List of lists</a>' tab on top of page to <strong>display all available lists</strong>.[%END%]</li> - </ul> - <p class="retraitita">[%|helploc%]According to the domain to which your email address belongs (example: <em class="example">cru.fr</em>, <em class="example">fai.com</em>, etc.) and to the location you log on from, you will not have access to the same lists. However you can subscribe to a list that does not display if you know its name. To do this, <a href="#subscribe">use your email client</a>.[%END%]</p> - - <h3><a name="archives"></a>[%|helploc%]Reading a list archive online[%END%]</h3> - <p>[%|helploc(path_cgi)%]Please refer to the <a href="%1/help/arc"><strong>archive documentation</strong></a>.[%END%]</p> - - <h3><a name="sendmsg"></a>[%|helploc%]Sending a message[%END%]</h3> - <p>[%|helploc(path_cgi)%]Please refer to the <a href="%1/help/sendmsg"><strong>documentation about sending messages</strong></a>.[%END%]</p> - - <h3><a name="shared"></a>[%|helploc%]Using the shared document web space[%END%]</h3> - <p>[%|helploc(path_cgi)%]Please refer to the <a href="%1/help/shared"><strong>shared document web space documentation</strong></a>.[%END%]</p> - - <h3><a name="suspend"></a>[%|helploc%]Suspending or resuming your subscription of each list[%END%]</h3> - <p>[%|helploc(path_cgi)%]Please refer to the <a href="%1/help/suspend"><strong>subscription management documentation</strong></a>.[%END%]</p> - - <h3><a name="unsubscribe"></a>[%|helploc%]Unsubscribing from lists[%END%]</h3> - <p>[%|helploc%]To unsubscribe from a list, do as follows:[%END%]</p> - <ol> - <li>[%|helploc(conf.email,conf.host)%]From the address with which you subscribed to the list, send a <strong>message to %1@%2</strong>.[%END%]</li> - <li>[%|helploc%]In the subject line of your email, type in: <strong>unsubscribe nameofthelist</strong> (replace 'nameofthelist' by the name of the list you want to unsubscribe from).[%END%]</li> - <li>[%|helploc%]<strong>Leave the message body blank</strong>.[%END%]<br /> - <p class="retraitita">[%|helploc%]To save some time, you can also send several commands in a single message. To do that, follow the instructions available in the <a href="#howitworks">How the mailing list service works</a> section.[%END%]</p></li> - </ol> - <p>[%|helploc%]You can also unsubscribe through the mailing list web interface (you will need to repeat the operation for each list you want to unsubscribe from):[%END%]</p> - <ol> - <li>[%|helploc(path_cgi)%]Go to the list environment <strong><a href="%1/home">homepage</a></strong> and <strong>log on</strong>.[%END%]</li> - <li>[%|helploc%]<strong>Go to the information page of the list</strong> you want to unsubscribe from.[%END%]</li> - <li>[%|helploc%]<strong>In the left menu, click on the 'Unsubscribe' link</strong>.[%END%]</li> - </ol> - <hr /> -<!-- end help_user.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/help_user_options.tt2 b/sympa-6.1.20-src/web_tt2/help_user_options.tt2 deleted file mode 100644 index 7f2e381b42f776d36ce0b40df4e21d630b495cd7..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/help_user_options.tt2 +++ /dev/null @@ -1,59 +0,0 @@ -<!-- $Id: help_user_options.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> -<p> -[%|helploc%]This is a description of the receivie modes available in Sympa. These options are mutually exclusive, which means that you can't set two different receive modes at the same time. Only some of the modes might be available to specific mailing lists.[%END%] -</p> -<ul> - -<li>[%|helploc%]Digest[%END%]<br /> -[%|helploc%]Instead of receiving individual mail messages from the list, the subscriber will periodically -receive batched messages in a Digest. This Digest compiles a group of messages from the list, using -the multipart/digest MIME format.[%END%] -<br /><br /> -[%|helploc%]The sending interval for these Digests is defined by the list owner.[%END%]<br /><br /></li> - -<li>[%|helploc%]DigestPlain[%END%]<br /> -[%|helploc%]Similar to the Digest option in that the subscriber will periodically -receive batched messages in a Digest. With DigestPlain the Digest is sent in a plain text -format, with all attachments stripped out. DigestPlain is useful if your email software doesn't -display multipart/digest format messages well.[%END%] -<br /><br /> -[%|helploc%]The sending interval for these Digests is defined by the list owner.[%END%]<br /><br /></li> - -<li>[%|helploc%]Summary[%END%]<br /> - -[%|helploc%]Instead of receiving individual mail messages from the list, the subscriber will periodically -receive a list of messages. This mode is very close to the Digest reception mode but the -subscriber receives only the list of messages.[%END%] -<br /><br /></li> - -<li>[%|helploc%]Nomail[%END%] <br /> - -[%|helploc%]This mode is used when a subscriber no longer wishes to receive mail from the list, but nevertheless wishes to retain the ability to post to the list. This mode therefore prevents the subscriber from unsubscribing and subscribing later on.[%END%] <br /><br /></li> - -<li>Txt <br /> - -[%|helploc%]This mode is used when a subscriber wishes to receive mails sent in both HTML and plain text formats -only in plain text format.[%END%]<br /><br /></li> - -<li>Html<br /> - -[%|helploc%]This mode is used when a subscriber wishes to receive mails sent in both HTML and plain text formats -only in HTML format.[%END%]<br /><br /></li> - -<li>Urlize<br /> - -[%|helploc%]This mode is used when a subscriber does not want to receive attached files. The attached files are -replaced by a URL leading to the file stored on the list site.[%END%] <br /><br /></li> - -<li>Not_me<br /> - -[%|helploc%]This mode is used when a subscriber does not want to receive copies of messages that he or she has sent to -the list.[%END%] <br /><br /></li> - -<li>Normal<br /> - -[%|helploc%]This option is used mainly to cancel the nomail, summary or digest modes. If the subscriber was -in nomail mode, he or she will again receive individual mail messages from the list.[%END%] <br /><br /></li> - -</ul> -<!-- end help_user_options.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/info.tt2 b/sympa-6.1.20-src/web_tt2/info.tt2 deleted file mode 100644 index 7818fb7ece8ea4fe54c553e2c8785c0a9790d1dc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/info.tt2 +++ /dev/null @@ -1,17 +0,0 @@ -<!-- $Id: info.tt2 5675 2009-04-28 13:59:12Z david.verdin $ --> -[% IF homepage_content %] - [% homepage_content %] -[% ELSE %] - -<div class="block"> - -<h2>[%|loc%]List informations[%END%]</h2> - - <p> - [% info_content %] - </p> - -</div> -[% END %] - -<!-- end info.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/install_pending_list.tt2 b/sympa-6.1.20-src/web_tt2/install_pending_list.tt2 deleted file mode 100644 index c86aabdc5ea9339cf6525c216cea1371b6cea56e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/install_pending_list.tt2 +++ /dev/null @@ -1,29 +0,0 @@ -<!-- $Id: install_pending_list.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - -<br /> - -<br /> -<table summary="" class="preferences"> -<tr class="color_light"> -<td> -<table summary="" class="preferences"> -<tr class="color_light"> - <td><strong>[%|loc%]Listname:[%END%]</strong></td><td>[% list %]</td> -</tr> -<tr class="color_light"> - <td><strong>[%|loc%]Subject:[%END%] </strong></td><td>[% list_subject %]</td> -</tr> -<tr class="color_light"> - <td><strong>[%|loc%]List requested by[%END%] </strong></td><td>[% list_request_by %] [%|loc(list_request_date)%]on %1[%END%]</td> -</tr> -</table> -</td> -</tr> -</table> -<br /><br /> -[% IF is_listmaster %] -[% IF auto_aliases %] -[%|loc%]Aliases have been installed.[%END%] -[% END %] -[% END %] -<!-- end install_pending_list.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/javascript.tt2 b/sympa-6.1.20-src/web_tt2/javascript.tt2 deleted file mode 100644 index a07c0836f14581c6d63672624c852a3b80be36d2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/javascript.tt2 +++ /dev/null @@ -1,1165 +0,0 @@ -<!-- $Id: javascript.tt2 10066 2013-12-28 01:47:37Z sikeda $ --> - -[% IF use_htmlarea %] -<script type="text/javascript"> - _editor_url = "[% htmlarea_url %]/"; - _editor_lang = "en"; -</script> - -<script type="text/javascript" src="[% htmlarea_url %]/htmlarea.js"></script> -[% END %] - -<script type="text/javascript"> -function showhide(div){ - oDiv = document.getElementById(div); - if(oDiv.style.display == "none"){ - oDiv.style.display = "block"; - }else{ - oDiv.style.display = "none"; - } -} -</script> - -<script type="text/javascript"> -function show(div){ - oDiv = document.getElementById(div); - oDiv.style.display = "block"; -} -</script> - -<script type="text/javascript"> -function hide(div){ - oDiv = document.getElementById(div); - oDiv.style.display = "none"; -} - -function hideError() -{ - document.getElementById('ErrorBlock').style.display = 'none'; - document.getElementById('ErrorMsg').style.display = 'none'; -} - -</script> - -<script type="text/javascript"> -<!-- for other browsers - -// To confirm archives deletion - function dbl_confirm(my_form, my_message,my_message2) { - - if (confirm(my_message)) - { - if (confirm(my_message2)) - { - my_form.zip.value = "1"; - } - } else { - return false; - } - } - - // To confirm a form submition - function request_confirm(my_message) { - if (confirm(my_message)) { - return true; - }else { - return false; - } -} - - // To confirm on a link (A HREF) - function request_confirm_link(my_url, my_message) { - question = confirm(my_message); - if (question !="0") { - top.location = my_url; - } - } - -[% IF false %] - // To ask topic selection - var topic_names = new Array(); - var topic_titles = new Array(); - function checkbox_selection(my_url, my_message, boxnames, boxtitles) { - var maxname = boxnames.length; - var maxtitle = boxtitles.length; - - if (maxname != maxtitle) { - return false; - } - - msg=window.open("","","width=300,height=300,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no"); - msg.document.write('<HTML><BODY>'+'<CENTER><h3>'+my_message+'</h3></CENTER>'); - msg.document.write('<form action='+my_url+' method="post">'); - msg.document.write('<input type="hidden" name="list" value="[% list %]"/>'); - msg.document.write('<input type="hidden" name="action" value="review"/>'); - - for (var i=0;i<maxname ;i++ ){ - var bname = 'topic_'+boxnames[i]; - msg.document.write('<input type="checkbox" name='+bname+' value="1">'+boxtitles[i]); - msg.document.write('<br />'); - } - msg.document.write('<input type="checkbox" name="other" value="1" />[%|loc%]Other[%END%]'); - msg.document.write('<br /><br /><br />'); - msg.document.write('<input type="button" value="OK" onClick ="self.close()">');this.form.submit() - msg.document.write('</form>'); - msg.document.write('</BODY></HTML>'); - - return true; - //return msg.document.form; - - } -[% END %] - - - - - - // To confirm on a link (A HREF) - function refresh_mom_and_die() { - url = window.opener.location.href; - - if (url.indexOf('logout') > -1 ) { - url = '[% path_cgi %]/'; - } - - window.opener.location = url; - self.close(); - } - -[% IF cookie_set %] - function GetCookie (name) { - var arg = name + "="; - var alen = arg.length; - var clen = document.cookie.length; - var i = 0; - while (i < clen) { - var j = i + alen; - if (document.cookie.substring(i, j) == arg) - return getCookieVal (j); - i = document.cookie.indexOf(" ", i) + 1; - if (i == 0) break; - } - return null; - } - - function getCookieVal (offset) { - var endstr = document.cookie.indexOf (";", offset); - if (endstr == -1) - endstr = document.cookie.length; - return unescape(document.cookie.substring(offset, endstr)); - } -[% END %] - - function toggle_selection(myfield) { - if (!myfield.length) { - if (myfield.checked) { - myfield.checked = false; - }else { - myfield.checked = true; - } - }else if (myfield.length){ - for (i = 0; i < myfield.length; i++) { - if (myfield[i].checked) { - myfield[i].checked = false; - }else { - myfield[i].checked = true; - } - } - } - } - -[% IF (action == 'skinsedit') %] -function chooseColorNumber(cn, cv) { - var select = document.getElementById('custom_color_number'); - var text = document.getElementById('custom_color_value'); - - if (select) - for (var i=0; i<select.options.length; i++) - if (select.options[i].value == cn) { - select.options.selectedIndex = i; - if (text && cv) { - text.value = cv; - // FIXME: use jQuery trigger() - if (document.all) - text.fireEvent('onchange'); - else { - var evt = document.createEvent('HTMLEvents'); - evt.initEvent('change', false, true); - text.dispatchEvent(evt); - } - } - } -} - -[% END %] - -[% IF (action == 'modindex' || action == 'request_topic') || (action == 'viewmod' || action == 'compose_mail')%] - - // check if rejecting quietly spams - - function check_reject_spams(form,my_question,prevent_notify) { - var checkbox_checked = false; - - if (prevent_notify.checked == "1") { - return(true); - } - - if (!form.elements.length) { - if (form.elements.name == "idspam") { - var box = form.elements; - if (box.checked == "1" ) { - checkbox_checked = true; - } - } - }else{ - for (i = 0; i < form.elements.length; i++) { - if (form.elements[i].name == "idspam") { - var box = form.elements[i]; - if (box.checked == "1" ) { - checkbox_checked = true; - break; - } - } - } - } - if (checkbox_checked) { - if (confirm(my_question)){ - return(true); - }else{ - return(false); - } - } - } - - // To check at least one checkbox checked - function checkbox_check_topic(form,string) { - - var checkbox_checked = false; - var expr = /^topic_/; - - for (i = 0; i < form.elements.length; i++) { - if (form.elements[i].type == "checkbox") { - var box = form.elements[i]; - if (box.checked == "1" && expr.test(box.name)) { - checkbox_checked = true; - break; - } - } - } - if (checkbox_checked) { - return(true); - } else { - alert("You must select a topic"); - return(false); - } - } - -[% END %] - -[% IF false %] - - // No used function - // If the motif is found in the string, my_question is asked - // if the answer == yes than action is d_unzip else d_upload - function requestBasedOnRegExp(my_question,my_form) { - expr = /^.+\.zip$/i; - - found = expr.exec(document.getElementById("uploaded_file").value); - - if (found) { - if (confirm(my_question)) { - document.getElementById("javascript_action").value = "d_unzip"; - - } else { - document.getElementById("javascript_action").value = "d_upload"; - } - }else { - document.getElementById("javascript_action").value = "d_upload"; - } - return true; - } -[% END %] - -function set_select_value(s, v) { - for(var i=0; i<s.options.length; i++) s.options[i].selected = false; - for(var i=0; i<s.options.length; i++) if(s.options[i].value == v) { - s.options[i].selected = true; - return; - } -} - -//launch a search by message Id -function searched_by_msgId(id) { - var f = document.forms["log_form"]; - - set_select_value(f.elements["type"], 'all_actions'); - - set_select_value(f.elements["target_type"], 'msg_id'); - - f.elements["target"].value = id; - f.submit(); -} - -//reset all field in log form. -function clear_log_form() { - var f = document.forms["log_form"]; - - set_select_value(f.elements["type"], 'all_actions'); - - set_select_value(f.elements["target_type"], 'msg_id'); - - f.elements["target"].value = ''; - - f.elements["date_from"].value = ''; - f.elements["date_to"].value = ''; - f.elements["ip"].value = ''; -} - -//set a form field value to empty string. It uses the value of the field whose id is given -// as argument as a control to perform this operation or not. -function empty_field(target_field, control_field) { - if (document.getElementById(control_field).value == 'false'){ - document.getElementById(control_field).value = 'true'; - document.getElementById(target_field).value = ''; - } -} - -//to hide menu - -function afficheId(baliseId,baliseId2) - { - if (document.getElementById && document.getElementById(baliseId) != null) - { - document.getElementById(baliseId).style.visibility='visible'; - document.getElementById(baliseId).style.display='block'; - } - if (document.getElementById(baliseId2) != null) - { - document.getElementById(baliseId2).style.margin='0 0 0 25%'; - } - } - -function cacheId(baliseId,baliseId2) - { - if (document.getElementById && document.getElementById(baliseId) != null) - { - document.getElementById(baliseId).style.visibility='hidden'; - document.getElementById(baliseId).style.display='none'; - } - if (document.getElementById(baliseId2) != null) - { - document.getElementById(baliseId2).style.margin='0 0 0 0'; - } - - } - -cacheId('contenu','Stretcher'); -// if JavaScript is available, hide the content on the page load. -// Without JavaScript, content will be display. - - -[% IF action=='skinsedit' %] - -// A few configuration settings -var CROSSHAIRS_LOCATION = '[% icons_url %]/crosshairs.png'; -var HUE_SLIDER_LOCATION = '[% icons_url %]/h.png'; -var HUE_SLIDER_ARROWS_LOCATION = '[% icons_url %]/position.png'; -var SAT_VAL_SQUARE_LOCATION = '[% icons_url %]/sv.png'; - -// Here are some boring utility functions. The real code comes later. - -function hexToRgb(hex_string, default_) -{ - if (default_ == undefined) - { - default_ = null; - } - - if (hex_string.substr(0, 1) == '#') - { - hex_string = hex_string.substr(1); - } - - var r; - var g; - var b; - if (hex_string.length == 3) - { - r = hex_string.substr(0, 1); - r += r; - g = hex_string.substr(1, 1); - g += g; - b = hex_string.substr(2, 1); - b += b; - } - else if (hex_string.length == 6) - { - r = hex_string.substr(0, 2); - g = hex_string.substr(2, 2); - b = hex_string.substr(4, 2); - } - else - { - return default_; - } - - r = parseInt(r, 16); - g = parseInt(g, 16); - b = parseInt(b, 16); - if (isNaN(r) || isNaN(g) || isNaN(b)) - { - return default_; - } - else - { - return {r: r / 255, g: g / 255, b: b / 255}; - } -} - -function rgbToHex(r, g, b, includeHash) -{ - r = Math.round(r * 255); - g = Math.round(g * 255); - b = Math.round(b * 255); - if (includeHash == undefined) - { - includeHash = true; - } - - r = r.toString(16); - if (r.length == 1) - { - r = '0' + r; - } - g = g.toString(16); - if (g.length == 1) - { - g = '0' + g; - } - b = b.toString(16); - if (b.length == 1) - { - b = '0' + b; - } - return ((includeHash ? '#' : '') + r + g + b).toUpperCase(); -} - -var arVersion = navigator.appVersion.split("MSIE"); -var version = parseFloat(arVersion[1]); - -function fixPNG(myImage) -{ - if ((version >= 5.5) && (version < 7) && (document.body.filters)) - { - var node = document.createElement('span'); - node.id = myImage.id; - node.className = myImage.className; - node.title = myImage.title; - node.style.cssText = myImage.style.cssText; - node.style.setAttribute('filter', "progid:DXImageTransform.Microsoft.AlphaImageLoader" - + "(src=\'" + myImage.src + "\', sizingMethod='scale')"); - node.style.fontSize = '0'; - node.style.width = myImage.width.toString() + 'px'; - node.style.height = myImage.height.toString() + 'px'; - node.style.display = 'inline-block'; - return node; - } - else - { - return myImage.cloneNode(false); - } -} - -function trackDrag(node, handler) -{ - function fixCoords(x, y) - { - var nodePageCoords = pageCoords(node); - x = (x - nodePageCoords.x) + document.documentElement.scrollLeft; - y = (y - nodePageCoords.y) + document.documentElement.scrollTop; - if (x < 0) x = 0; - if (y < 0) y = 0; - if (x > node.offsetWidth - 1) x = node.offsetWidth - 1; - if (y > node.offsetHeight - 1) y = node.offsetHeight - 1; - return {x: x, y: y}; - } - function mouseDown(ev) - { - var coords = fixCoords(ev.clientX, ev.clientY); - var lastX = coords.x; - var lastY = coords.y; - handler(coords.x, coords.y); - - function moveHandler(ev) - { - var coords = fixCoords(ev.clientX, ev.clientY); - if (coords.x != lastX || coords.y != lastY) - { - lastX = coords.x; - lastY = coords.y; - handler(coords.x, coords.y); - } - } - function upHandler(ev) - { - myRemoveEventListener(document, 'mouseup', upHandler); - myRemoveEventListener(document, 'mousemove', moveHandler); - myAddEventListener(node, 'mousedown', mouseDown); - } - myAddEventListener(document, 'mouseup', upHandler); - myAddEventListener(document, 'mousemove', moveHandler); - myRemoveEventListener(node, 'mousedown', mouseDown); - if (ev.preventDefault) ev.preventDefault(); - } - myAddEventListener(node, 'mousedown', mouseDown); - node.onmousedown = function(e) { return false; }; - node.onselectstart = function(e) { return false; }; - node.ondragstart = function(e) { return false; }; -} - -var eventListeners = []; - -function findEventListener(node, event, handler) -{ - var i; - for (i in eventListeners) - { - if (eventListeners[i].node == node && eventListeners[i].event == event - && eventListeners[i].handler == handler) - { - return i; - } - } - return null; -} -function myAddEventListener(node, event, handler) -{ - if (findEventListener(node, event, handler) != null) - { - return; - } - - if (!node.addEventListener) - { - node.attachEvent('on' + event, handler); - } - else - { - node.addEventListener(event, handler, false); - } - - eventListeners.push({node: node, event: event, handler: handler}); -} - -function removeEventListenerIndex(index) -{ - var eventListener = eventListeners[index]; - delete eventListeners[index]; - - if (!eventListener.node.removeEventListener) - { - eventListener.node.detachEvent('on' + eventListener.event, - eventListener.handler); - } - else - { - eventListener.node.removeEventListener(eventListener.event, - eventListener.handler, false); - } -} - -function myRemoveEventListener(node, event, handler) -{ - removeEventListenerIndex(findEventListener(node, event, handler)); -} - -function cleanupEventListeners() -{ - var i; - for (i = eventListeners.length; i > 0; i--) - { - if (eventListeners[i] != undefined) - { - removeEventListenerIndex(i); - } - } -} -myAddEventListener(window, 'unload', cleanupEventListeners); - -// This copyright statement applies to the following two functions, -// which are taken from MochiKit. -// -// Copyright 2005 Bob Ippolito <bob@redivi.com> -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject -// to the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -function hsvToRgb(hue, saturation, value) -{ - var red; - var green; - var blue; - if (value == 0.0) - { - red = 0; - green = 0; - blue = 0; - } - else - { - var i = Math.floor(hue * 6); - var f = (hue * 6) - i; - var p = value * (1 - saturation); - var q = value * (1 - (saturation * f)); - var t = value * (1 - (saturation * (1 - f))); - switch (i) - { - case 1: red = q; green = value; blue = p; break; - case 2: red = p; green = value; blue = t; break; - case 3: red = p; green = q; blue = value; break; - case 4: red = t; green = p; blue = value; break; - case 5: red = value; green = p; blue = q; break; - case 6: // fall through - case 0: red = value; green = t; blue = p; break; - } - } - return {r: red, g: green, b: blue}; -} - -function rgbToHsv(red, green, blue) -{ - var max = Math.max(Math.max(red, green), blue); - var min = Math.min(Math.min(red, green), blue); - var hue; - var saturation; - var value = max; - if (min == max) - { - hue = 0; - saturation = 0; - } - else - { - var delta = (max - min); - saturation = delta / max; - if (red == max) - { - hue = (green - blue) / delta; - } - else if (green == max) - { - hue = 2 + ((blue - red) / delta); - } - else - { - hue = 4 + ((red - green) / delta); - } - hue /= 6; - if (hue < 0) - { - hue += 1; - } - if (hue > 1) - { - hue -= 1; - } - } - return { - h: hue, - s: saturation, - v: value - }; -} - -function pageCoords(node) -{ - var x = node.offsetLeft; - var y = node.offsetTop; - var parent = node.offsetParent; - while (parent != null) - { - x += parent.offsetLeft; - y += parent.offsetTop; - parent = parent.offsetParent; - } - return {x: x, y: y}; -} - -// The real code begins here. -var huePositionImg = document.createElement('img'); -huePositionImg.galleryImg = false; -huePositionImg.width = 35; -huePositionImg.height = 11; -huePositionImg.src = HUE_SLIDER_ARROWS_LOCATION; -huePositionImg.style.position = 'absolute'; - -var hueSelectorImg = document.createElement('img'); -hueSelectorImg.galleryImg = false; -hueSelectorImg.width = 35; -hueSelectorImg.height = 200; -hueSelectorImg.src = HUE_SLIDER_LOCATION; -hueSelectorImg.style.display = 'block'; - -var satValImg = document.createElement('img'); -satValImg.galleryImg = false; -satValImg.width = 200; -satValImg.height = 200; -satValImg.src = SAT_VAL_SQUARE_LOCATION; -satValImg.style.display = 'block'; - -var crossHairsImg = document.createElement('img'); -crossHairsImg.galleryImg = false; -crossHairsImg.width = 21; -crossHairsImg.height = 21; -crossHairsImg.src = CROSSHAIRS_LOCATION; -crossHairsImg.style.position = 'absolute'; - -function makeColorSelector(inputBox) -{ - var rgb, hsv - - function colorChanged() - { - var hex = rgbToHex(rgb.r, rgb.g, rgb.b); - var hueRgb = hsvToRgb(hsv.h, 1, 1); - var hueHex = rgbToHex(hueRgb.r, hueRgb.g, hueRgb.b); - previewDiv.style.background = hex; - inputBox.value = hex; - satValDiv.style.background = hueHex; - crossHairs.style.left = ((hsv.v*199)-10).toString() + 'px'; - crossHairs.style.top = (((1-hsv.s)*199)-10).toString() + 'px'; - huePos.style.top = ((hsv.h*199)-5).toString() + 'px'; - } - function rgbChanged() - { - hsv = rgbToHsv(rgb.r, rgb.g, rgb.b); - colorChanged(); - } - function hsvChanged() - { - rgb = hsvToRgb(hsv.h, hsv.s, hsv.v); - colorChanged(); - } - - var colorSelectorDiv = document.createElement('div'); - colorSelectorDiv.style.padding = '15px'; - colorSelectorDiv.style.position = 'relative'; - colorSelectorDiv.style.height = '275px'; - colorSelectorDiv.style.width = '250px'; - - var satValDiv = document.createElement('div'); - satValDiv.style.position = 'relative'; - satValDiv.style.width = '200px'; - satValDiv.style.height = '200px'; - var newSatValImg = fixPNG(satValImg); - satValDiv.appendChild(newSatValImg); - var crossHairs = crossHairsImg.cloneNode(false); - satValDiv.appendChild(crossHairs); - function satValDragged(x, y) - { - hsv.s = 1-(y/199); - hsv.v = (x/199); - hsvChanged(); - } - trackDrag(satValDiv, satValDragged) - colorSelectorDiv.appendChild(satValDiv); - - var hueDiv = document.createElement('div'); - hueDiv.style.position = 'absolute'; - hueDiv.style.left = '230px'; - hueDiv.style.top = '15px'; - hueDiv.style.width = '35px'; - hueDiv.style.height = '200px'; - var huePos = fixPNG(huePositionImg); - hueDiv.appendChild(hueSelectorImg.cloneNode(false)); - hueDiv.appendChild(huePos); - function hueDragged(x, y) - { - hsv.h = y/199; - hsvChanged(); - } - trackDrag(hueDiv, hueDragged); - colorSelectorDiv.appendChild(hueDiv); - - var previewDiv = document.createElement('div'); - previewDiv.style.height = '50px' - previewDiv.style.width = '50px'; - previewDiv.style.position = 'absolute'; - previewDiv.style.top = '225px'; - previewDiv.style.left = '15px'; - previewDiv.style.border = '1px solid black'; - colorSelectorDiv.appendChild(previewDiv); - - function inputBoxChanged() - { - rgb = hexToRgb(inputBox.value, {r: 0, g: 0, b: 0}); - rgbChanged(); - } - myAddEventListener(inputBox, 'change', inputBoxChanged); - inputBox.size = 8; - inputBox.style.position = 'absolute'; - inputBox.style.right = '15px'; - inputBox.style.top = (225 + (25 - (inputBox.offsetHeight/2))).toString() + 'px'; - colorSelectorDiv.appendChild(inputBox); - - inputBoxChanged(); - - return colorSelectorDiv; -} - -function makeColorSelectors(ev) -{ - var inputNodes = document.getElementsByTagName('input'); - var i; - for (i = 0; i < inputNodes.length; i++) - { - var node = inputNodes[i]; - if (node.className != 'color') - { - continue; - } - var parent = node.parentNode; - var prevNode = node.previousSibling; - var selector = makeColorSelector(node); - parent.insertBefore(selector, (prevNode ? prevNode.nextSibling : null)); - } -} - -myAddEventListener(window, 'load', makeColorSelectors); - -[% END %] -// end browsers --> -</script> - -<script type="text/javascript"> - -/*********************************************************************** -* script MICRO-CAL (V4.2) par Amroune Selim (amrounix@gmail.com) -* all copies, releases, modifications or improvements are allowed. -************************************************************************ -* Using script to manage the calendar. -* Used by suspend_request.tt2 -* Select a start date and end date. -*************************************************************************/ - -var param_ddeb = {"dfin" : "date_fin", "titre" : "[%|loc%]Start date[%END%]" }; -var param_dfin = {"ddeb" : "date_deb", "titre" : "[%|loc%]End date[%END%]" }; - -/* vars */ -var pDefaut = { - "mois" : new Array("[%|loc%]January[%END%]","[%|loc%]February[%END%]","[%|loc%]March[%END%]","[%|loc%]April[%END%]","[%|loc%]May[%END%]","[%|loc%]June[%END%]","[%|loc%]July[%END%]","[%|loc%]August[%END%]","[%|loc%]September[%END%]","[%|loc%]October[%END%]","[%|loc%]November[%END%]","[%|loc%]December[%END%]"), - "jour" : new Array("[%|loc%]Su[%END%]","[%|loc%]Mo[%END%]","[%|loc%]Tu[%END%]","[%|loc%]We[%END%]","[%|loc%]Th[%END%]","[%|loc%]Fr[%END%]","[%|loc%]Sa[%END%]"), - "jLib" : new Array("[%|loc%]Sunday[%END%]","[%|loc%]Monday[%END%]","[%|loc%]Tuesday[%END%]","[%|loc%]Wednesday[%END%]","[%|loc%]Thursday[%END%]","[%|loc%]Friday[%END%]","[%|loc%]Saturday[%END%]"), - "titre" : "[%|loc%]Calendar[%END%]", - "aujourdhui" : "[%|loc%]today[%END%]", - "debutSemaine" : 1, /*debut de la semaine 0=dim,1=lun,...*/ - "jPause" : {6:true,0:true}, /*jour de pause de la semaine (samedi & dimanche)*/ - "jFeriee": {"1-1":"Jour de l'an","1-5":"Fête du travail","8-5":"Armistice 39-45","14-7":"Fête nationale","15-8":"Ascension","1-11":"Armistice 14-18","11-11":"Toussaint","25-12":"Noël"} , - "moisMoins" : "<", "moisPlus" : ">", /*navigation par mois*/ - "anneeMoins" : "<<", "anneePlus" : ">>", /*navigation par annee*/ - "format" : "%j-%m-%a", /*format de sortie : %j = jour, %m = mois, %a =année*/ - "date" : null, "ddeb" : "", "dfin" : "", - "dateMin" : null, "dateMax" : null -} - -var tempo = new Array(); /*gestion de la fermeture des calendriers quand on perd le focus*/ -var nomove={"TR":0,"CENTER":0,"B":0,"P":0,"U":0,"I":0,"DIV":0,"A":0,"FONT":0,"LI":0,"PRE":0,"SPAN":0,"SUB":0,"SUP":0,"FORM":0}; -//var nomove={"TD":0,"TABLE":0}; - -/* simplification calls */ -function _(x) -{ - return document.getElementById(x); -} - -/* Returns the number of days since January 1 (for number of the week)*/ -function nbJ(dateX) -{ - var j_mois=[0,31,59,90,120,151,181,212,243,273,304,334]; - mm=dateX.getMonth();aa=dateX.getFullYear();nb=j_mois[mm]+dateX.getDate()-1 ; - if ((aa%4==0 && aa %100!=0 || aa%400==0) && mm>1) nb++; /*test bissextile*/ - return nb; -} - -function dateMin(dateA,dateB) -{ - return (dateB==null||(dateA!=null&&(dateA.getFullYear()<dateB.getFullYear() - ||(dateA.getFullYear()==dateB.getFullYear()&&dateA.getMonth()<dateB.getMonth()) - ||(dateA.getFullYear()==dateB.getFullYear()&&dateA.getMonth()==dateB.getMonth()&&dateA.getDate()<dateB.getDate()) - ))) ? dateA:dateB - } - -function dateMax(dateA,dateB) -{ - return (dateB==null||(dateA!=null&&(dateA.getFullYear()>dateB.getFullYear() - ||(dateA.getFullYear()==dateB.getFullYear()&&dateA.getMonth()>dateB.getMonth()) - ||(dateA.getFullYear()==dateB.getFullYear()&&dateA.getMonth()==dateB.getMonth()&&dateA.getDate()>dateB.getDate()) - ))) ? dateA:dateB - } - -/* compare two dates and return true if dateA<=dateB */ -function dateBefore(dateA,dateB) -{ - return dateA!=null&&dateB!=null&&(dateA.getFullYear()<dateB.getFullYear()||(dateA.getFullYear()==dateB.getFullYear()&&dateA.getMonth()<dateB.getMonth())|| - (dateA.getFullYear()==dateB.getFullYear()&&dateA.getMonth()==dateB.getMonth()&&dateA.getDate()<dateB.getDate())); -} - -/* function to display the navigation informations */ -function htmNavChk(dateA,dateB,src,srcId,mm,yy,txt) -{ - return (dateBefore(dateA,dateB)) ? - "<td onclick=\"\"> </td>" : ("<td class=\"zoneNav\" onclick=\"return generateCal('"+src+"','"+srcId+"',"+mm+","+yy+")\">"+txt+"</td>"); -} - -/* create the calendar */ -function generateCal(src,srcId,mm,yy) -{ - if (tempo!=null&&tempo[srcId]!=null) - { - clearTimeout(tempo[srcId]); - _(src).focus(); - } - - if (mm<0) {mm+=12;yy--;} /*changement de mois/année*/ - else if (mm>11) {mm-=12;yy++;} - - dnow=new Date(); /*date du jour*/ - param=_(srcId).parametre; /*parametre par defaut*/ - ddeb = null; dfin = null; - - if (param["ddeb"]!="" && _(param["ddeb"]+"_cal")!=null && _(param["ddeb"]+"_cal").parametre.date != null) - ddeb = _(param["ddeb"]+"_cal").parametre.date; - if (param["dfin"]!="" && _(param["dfin"]+"_cal")!=null && _(param["dfin"]+"_cal").parametre.date != null) - dfin = _(param["dfin"]+"_cal").parametre.date; - - htm="<table cellpadding=0 cellspacing=0 >"; - - /*titre*/ - if (param["titre"]!= null ) - {htm+="<tr><td colspan=\"8\" class=\"zoneTitre\" >"+param["titre"]+"</td></tr>";} - - /*navigation area*/ - htm+="<tr><td colspan=\"8\"><table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" ><tr>"; - htm+=htmNavChk(new Date(yy-1,mm,1),dateMax(ddeb,param["dateMin"]),src,srcId,mm,yy-1,param["anneeMoins"]); - htm+=htmNavChk(new Date(yy,mm,0),dateMax(ddeb,param["dateMin"]),src,srcId,mm-1,yy,param["moisMoins"]); - htm+="<td class=\"zoneMois\">"+param["mois"][mm]+"</td>"; - htm+=htmNavChk(dateMin(dfin,param["dateMax"]),new Date(yy,mm+1,1),src,srcId,mm+1,yy,param["moisPlus"]); - htm+=htmNavChk(dateMin(dfin,param["dateMax"]),new Date(yy+1,mm,1),src,srcId,mm,yy+1,param["anneePlus"]); - htm+="</tr></table></td></tr>"; - - /* day of the week*/ - htm+="<tr><td></td>"; - pJs = param["debutSemaine"]; - pJm = new Date(yy,mm,1).getDay(); /*day of the 1st of the month*/ - pjT = 1-pJm+pJs; - pjT-=(pjT>1)?7:0; - dateX = new Date(yy,mm,pjT); - for (j=0;j<7;j++) /*display the days of the week*/ - { - htm+="<td>"+param["jour"][(j+pJs)%7]+"</td>"; - } - htm+="</tr>"; - avantFinMois=true;idx=0; - idxSem=parseInt(nbJ(new Date(yy,mm,1))/7+1,10); /*index de la semaine*/ - - while(avantFinMois) /*loop until the end month */ - { - /* If we want to display the number of weeks : htm+=(idx%7==0)?"<tr><td class=\"nSemaine\" >"+idxSem+"</td>":""; */ - htm+=(idx%7==0)?"<tr><td class='nSemaine' >"+""+"</td>":""; /* delete the number of weeks*/ - if (dateBefore(dateX,dateMax(ddeb,param["dateMin"]))||dateBefore(dateMin(dfin,param["dateMax"]),dateX)) - htm+="<td style=\"text-decoration:line-through;\"><a class=\"tdx\" href=\"#\">"+subDiv(param,idx,dateX,mm,aa,0)+"</b></td>"; - else - htm+="<td><a class=\"tdx\" href=\"#\" onclick=\"javascript:choix("+dateX.getFullYear()+","+dateX.getMonth()+","+dateX.getDate()+",'"+srcId+"','"+src+"')\" >"+subDiv(param,idx,dateX,mm,aa,0)+"</a></td>"; - idx++; - if (idx%7==0) - {htm+="</tr>"; idxSem++;} - dateX= new Date(dateX.getFullYear(),dateX.getMonth(),dateX.getDate()+1); - if (idx>7&&idx%7==0&&dateX.getMonth()!=mm) - {avantFinMois=false;} - } - htm+="<tr><td colspan='6'> "; - if (!dateBefore(dnow,dateMax(ddeb,param["dateMin"]))&&!dateBefore(dateMin(dfin,param["dateMax"]),dnow)) - htm+="<a class=\"tdxNow\" href=\"#\" onclick=\"javascript:choix("+dnow.getFullYear()+","+dnow.getMonth()+","+dnow.getDate()+",'"+srcId+"','"+src+"')\" >"+param["aujourdhui"]+"</a>"; - else htm+=" " - - /*year*/ - htm+="</td><td colspan=\"2\" class=\"zoneAnnee\">"+yy+"</td></tr></table>"; - //alert(htm); - _(srcId).innerHTML=htm; - return false; -} - -/* add a zero before */ -function addZero(val) -{ return ((val<10)?"0":"")+val;} - -function choix(aa,mm,jj,srcId,src) -{ - var datePos=new Date(aa,mm,jj); - var jour = datePos.getDay(); - param=_(srcId).parametre; - param.date = datePos; - var dateAffiche = param["format"].replace("%j",addZero(datePos.getDate())).replace("%k",datePos.getDate()).replace("%d",param["jLib"][jour]); - dateAffiche = dateAffiche.replace("%m",addZero(datePos.getMonth()+1)).replace("%n",datePos.getMonth()+1).replace("%p",param["mois"][datePos.getMonth()]); - dateAffiche = dateAffiche.replace("%a",datePos.getFullYear()).replace("%y",datePos.getYear()); - _(src).value = dateAffiche; -} - -function subDiv(param,idx,dateX,mm,aa,code) -{ - pJs = param["debutSemaine"]; - dnow=new Date(); - switch(code) - { - case 0 : return (param["jPause"][(idx+pJs)%7]==true) ? "<div class=\"enWeekEnd\" >"+subDiv(param,idx,dateX,mm,aa,1)+"</div>" : subDiv(param,idx,dateX,mm,aa,1) ; break; - case 1 : return (param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]!=null) ? ("<div class=\"enFeriee\" title=\""+param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]+"\" >"+subDiv(param,idx,dateX,mm,aa,2)+"</div>") : subDiv(param,idx,dateX,mm,aa,2) ; break; - case 2 : return (dateX.getMonth()==mm) ? "<div class=\"enMois\" >"+subDiv(param,idx,dateX,mm,aa,3)+"</div>" : subDiv(param,idx,dateX,mm,aa,3) ; break; - case 3 : return (dateX.getMonth()==dnow.getMonth()&&dateX.getFullYear()==dnow.getFullYear()&&dateX.getDate()==dnow.getDate()) ? "<div class=\"aujourdhui\" >"+subDiv(param,idx,dateX,mm,aa,4)+"</div>" : subDiv(param,idx,dateX,mm,aa,4) ; break; - case 4 : return dateX.getDate(); break; - } -} - -function getMinx(tab,mini) -{ - var rc=mini,code=""; - for (k in tab) - { - if (tab[k]>mini && rc<tab[k]) {rc=tab[k]; code = k; } - } - return code; -} - -function decodeDate(val,format,defaut) -{ - var dnow = defaut,jj= dnow.getDate(),mm = dnow.getMonth(), aa= dnow.getFullYear(); - var parx = {"%j":"([0123][0-9])","%k":"([0123]?[0-9])","%d":"("+(param["jLib"].join("|"))+")","%m":"([01][0-9])","%n":"([01]?[0-9])", - "%p":"("+(param["mois"].join("|"))+")","%a":"([12][0-9]{3})","%y":"([0-9]{2})"}; - var ff= format,df = format; - for (e in parx) - { - ff = ff.replace(e,parx[e]); - df = df.replace(e,"("+e+")"); - } - tablo = (new RegExp(ff)).exec(val); - clef = (new RegExp(df)).exec(format); - if (tablo!=null&&clef!=null) - { - for (i = 0; i< tablo.length;i++) - { - switch(clef[i]) - { - case "%j": case "%k" : jj=parseInt(tablo[i],10); break; - case "%m": case "%n" : mm=parseInt(tablo[i],10)-1; break; - case "%p" : mm=0; while(mm<param["mois"].length&¶m["mois"][mm]!=tablo[i]){mm++;}; break; - case "%a": aa = parseInt(tablo[i],10); break; - } - } - } - return new Date(aa,mm,jj); -} - -/* Initialisation of the parameters for the calendar : display position, create div, ... */ -/* Let you see the calendar when you click on the input */ -function visuCal(src,paramX) -{ - if (src.id=="") /*if not ID, create one*/ - { - cpt=0; - while(_("microcal"+cpt) != null) - {cpt++;} - src.id="microcal"+cpt; - } - pos_ = new Array(); - pos_ = getOffsets(_(src.id)); - srcId = src.id+"_cal"; /*id div for calendar*/ - dnow= new Date(); - if (_(srcId)==null) /*if doesn't exist create one*/ - { - param={} - for (e in pDefaut) { - trouve=false; - if (paramX!=null) - for (i in paramX) { if (e==i) {param[e]=paramX[e];trouve=true;} } - if (!trouve) param[e]=pDefaut[e]; - } - dnow = decodeDate(src.value,param.format,new Date()); - div = document.createElement('div'); - div.setAttribute('id',srcId); - div.style.position = 'absolute'; - div.style.top = (pos_[1] + 18) + 'px'; /* 18 : high of the input */ - div.style.left = pos_[0] + 'px'; /*this.deltaG = 0; */ - div.className = 'divCal'; - div.parametre = param; - document.body.appendChild(div); - generateCal(src.id,srcId,dnow.getMonth(),dnow.getFullYear(),param); - } else - { - div = _(src.id+"_cal"); - div.style.display='inline'; /*display calendar*/ - div.style.top = (pos_[1] + 18) + 'px'; - div.style.left = pos_[0] + 'px'; /*this.deltaG = 0; */ - } - -} - -/* hide the calendar */ -function masqueCal(src) -{ - tempo[src.id+"_cal"]=window.setTimeout("_('"+src.id+"_cal').style.display='none'",500); -} - -/* return the position (x, y) of an element in an array */ -function getOffsets(obj) { - var offsetTop = obj.offsetTop; - var offsetLeft = obj.offsetLeft; - while ((obj = obj.offsetParent )!=null) { - offsetTop += obj.offsetTop; - offsetLeft += obj.offsetLeft; - } - return [offsetLeft, offsetTop]; -} - -/* popups config contextual help */ -function config_ctxhelp(td) { - if(!td.d) { - var tbl = td; - var d = td.getElementsByTagName('div')[0]; - while(tbl.parentNode && tbl.tagName.toLowerCase() != 'table') tbl = tbl.parentNode; - if(tbl.tagName.toLowerCase() == 'table') d.style.width = tbl.offsetWidth + 'px'; - td.d = d; - td.onmouseout = function() { - this.d.style.display = 'none'; - } - } - td.d.style.display = 'block'; -} - -/* check if the value of element is not empty */ -function isNotEmpty(id) { - if (document.getElementById(id)) { - var value = document.getElementById(id).value; - if (value.replace(/\s+/g, '')) - return true; - } - return false; -} - -</script> - -<!-- end javascript.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/latest_arc.tt2 b/sympa-6.1.20-src/web_tt2/latest_arc.tt2 deleted file mode 100644 index 0c592aafed8f29cb3c6371b5056a35f0d1070cce..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/latest_arc.tt2 +++ /dev/null @@ -1,34 +0,0 @@ -<!-- $Id: latest_arc.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - - -<h2> - [% IF count %] - [%|loc(count)%] The %1 most recent messages [%END%] - [% ELSE %] - [%|loc%] Recent messages [%END%] - [% END %] - - [% IF for %] - [%|loc(for)%] for %1 days [%END%] - [% END %] -</h2> -<br /> - -<table summary="[%|loc%] The most recent messages for this list [%END%]" class="table_style"> - <tr class="color_light"> - <th>[%|loc%]Date[%END%]</th> - <th>[%|loc%]Subject[%END%]</th> - <th>[%|loc%]From[%END%]</th> - </tr> - - [% FOREACH a = archives %] - <tr> - <td> [% a.date %] </td> - <td> <a href="[% conf.wwsympa_url %]/arcsearch_id/[% list %]/[% a.year_month %]/[% a.message_id %]" >[% a.subject %] </td> - <td> [% a.from %] </td> - </tr> - - [% END %] - -</table> -<!-- end latest_arc.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/latest_d_read.tt2 b/sympa-6.1.20-src/web_tt2/latest_d_read.tt2 deleted file mode 100644 index 719828464e9549513e4fda9aa563b77dc11f870e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/latest_d_read.tt2 +++ /dev/null @@ -1,51 +0,0 @@ -<!-- $Id: latest_d_read.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<h2> - [% IF count %] - [%|loc(count)%] The %1 most recent shared documents [%END%] - [% ELSE %] - [%|loc%] Most recent shared documents [%END%] - [% END %] - - [% IF for %] - [%|loc(for)%] for %1 days [%END%] - [% END %] -</h2> -<br /> - -<table class="table_style" summary="[%|loc%]Most recent documents for this list [%END%] "> - <tr class="color_light"> - <th>[%|loc%]Last update[%END%]</th> - <th>[%|loc%]Name[%END%]</th> - <th>[%|loc%]Author[%END%]</th> - <th>[%|loc%]Directory[%END%]</th> - </tr> - - [% FOREACH d = documents %] - <tr> - <td> [% d.last_update %] </td> - <td> - [% IF d.html %] - <a href="[% path_cgi %]/d_read/[% list %][% d.escaped_content_dir %]/[% d.escaped_name %]" title="[%|loc%]Open in a new window[%END%]" target="html_window"> - <img src="[% d.icon %]" alt="[% d.escaped_title %]" /> [% d.name %] </a> - [% ELSIF d.url %] - <a href="[% d.url %]" title="[%|loc%]Open in a new window[%END%]" target="html_window"> - <img src="[% d.icon %]" alt="[% d.escaped_title %]" /> [% d.anchor %] </a> - [% ELSE %] - <a href="[% path_cgi %]/d_read/[% list %][% d.escaped_content_dir %]/[% d.escaped_name %]"> - <img src="[% d.icon %]" alt="[% d.escaped_title %]" /> [% d.name %] </a> - [% END %] - - <td> [% IF d.author %] - [% d.author %] - [% ELSE %] - [%|loc%]Unknown[%END%] - [% END %] - </td> - <td> <a href="[% path_cgi %]/d_read/[% list %][% d.escaped_content_dir %]"/> [% d.content_dir %] </td> - </tr> - - [% END %] - -</table> -<!-- end latest_d_read.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/latest_lists.tt2 b/sympa-6.1.20-src/web_tt2/latest_lists.tt2 deleted file mode 100644 index fd4636905666031c375ebbcbcb3d561079c785b1..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/latest_lists.tt2 +++ /dev/null @@ -1,45 +0,0 @@ -<!-- $Id: latest_lists.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<h2> - [% IF count %] - [%|loc(count)%]The %1 newest lists[%END%] - [% ELSE %] - [%|loc%]New lists[%END%] - [% END %] - - [% IF for %] - [%|loc(for)%] for %1 days [%END%] - [% END %] -</h2> - -<br /> - - -<table class="table_style" summary="[%|loc%] The latest lists of this robot[%END%] "> -<tr class="color_light"> - <th>[%|loc%]Listname[%END%]</th> - <th>[%|loc%]Creation date[%END%]</th> - <th>[%|loc%]Subject[%END%]</th> - </tr> - -[% FOREACH l = latest_lists %] - -[% IF dark == '1' %] - <tr valign="top">[% SET dark = 0 %] -[% ELSE %] - <tr class="color0">[% SET dark = 1 %] -[% END %] - <td> - <a href="[% path_cgi %]/info/[% l.name %]" ><strong>[% hidden_head %][% l.name %][% hidden_at %][% l.host %][% hidden_end %]</strong></a> - </td> - - <td> [% l.date %] </td> - <td> [% l.subject %] </td> - </tr> - - [% END %] - - <br /> -</table> - -<!-- end latest_lists.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/list_button_footer.tt2 b/sympa-6.1.20-src/web_tt2/list_button_footer.tt2 deleted file mode 100644 index 6f9d95a2af0b335b9f7286846ff8ba0435c548bb..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/list_button_footer.tt2 +++ /dev/null @@ -1,7 +0,0 @@ -<!-- $Id: list_button_footer.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - </tr> - </table> - </td> - </tr> - </table> -<!-- end list_button_footer.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/list_button_header.tt2 b/sympa-6.1.20-src/web_tt2/list_button_header.tt2 deleted file mode 100644 index 901dcf5cb4a66b02f845d864ecf70f561960c5fc..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/list_button_header.tt2 +++ /dev/null @@ -1,7 +0,0 @@ -<!-- $Id: list_button_header.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - <table style="width: auto;" border="0" cellpadding="0" cellspacing="1"> - <tr> - <td style="background-color: [% color_4 %];" valign="top"> - <table border="0" style="width: 100%;" cellspacing="1" cellpadding="1"> - <tr> -<!-- end list_button_header.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/list_menu.tt2 b/sympa-6.1.20-src/web_tt2/list_menu.tt2 deleted file mode 100644 index 7d2f7048f2c0f4f95a754aab98bb83967af16b1e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/list_menu.tt2 +++ /dev/null @@ -1,93 +0,0 @@ -<!-- $Id: list_menu.tt2 6184 2009-09-04 12:57:30Z david.verdin $ --> - -<div class="MenuBlock"> -[% PROCESS 'list_panel.tt2' %] - -<div id="list_admin_menu"> -<ul> -[% IF (is_subscriber == '1') %] - [% IF may_suboptions == '1' %] - [% IF action == 'suboptions' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/suboptions/[% list %]" >[%|loc%]Subscriber Options[%END%]</a></li> - [% END %] - [% IF may_signoff == '1' %] - [% IF action == 'signoff' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/signoff/[% list %]" onclick="request_confirm_link('[% path_cgi %]/signoff/[% list %]', '[% FILTER escape_quote %][%|loc(list)%]Do you really want to unsubscribe from list %1?[%END%][%END%]'); return false;">[%|loc%]Unsubscribe[%END%]</a></li> - [% END %] -[% ELSE %] - [% IF may_subscribe %] - [% IF action == 'subrequest' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/subscribe/[% list %]" [% IF listconf.custom_attribute.size == 0 %]onclick="request_confirm_link('[% path_cgi %]/subscribe/[% list %]', '[% FILTER escape_quote %][%|loc(list)%]Do you really want to subscribe to list %1?[%END%][%END%]'); return false;"[% END %]>[%|loc%]Subscribe[%END%]</a></li> - [% END %] - - [% IF ! user.email %] - [% IF action == 'signoff' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/sigrequest/[% list %]">[%|loc%]Unsubscribe[%END%]</a></li> - [% END %] - -[% END %] - -[% IF action == 'info'%][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/info/[% list %]">[%|loc%]Info[%END%]</a></li> - -[% IF action == 'admin' || action_type == 'admin' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/admin/[% list %]">[%|loc%]Admin[%END%]</a></li> - -[% IF is_owner || is_editor %] -<li class ="menuLinks" >[%|loc%]Moderate[%END%] - - <ul class="menuLinks"> - [% IF is_editor %] - [% IF action == 'modindex' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] - - <li class="[% class %]">» <a href="[% path_cgi %]/modindex/[% list %]">[%|loc%]Message[%END%] ([% mod_message %]) </a></li> - - <li class="[% class %]">» <a href="[% path_cgi %]/modindex/[% list %]">[%|loc%]Document[%END%] ([% mod_total_shared %])</a></li> - [% END %] - [% IF is_owner %] - [% IF action == 'subindex' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] - - <li class="[% class %]">» <a href="[% path_cgi %]/subindex/[% list %]">[%|loc%]Subscriptions[%END%] ([% mod_subscription %])</a></li> - - [% END %] - </ul> -</li> -[% END %] - - -[% IF is_archived %] - [% IF arc_access %] - [% IF action == 'arc' || action == 'arcsearch_form' || action == 'arcsearch' || action == 'arc_protect' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/arc/[% list %]" >[%|loc%]Archive[%END%]</a></li> - [% ELSE %] - <div class="menuInactive2">[%|loc%]Archive[%END%]</div><br /> - [% END %] -[% END %] - -[% IF may_post %] -[% IF action == 'compose_mail' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/compose_mail/[% list %]" >[%|loc%]Post[%END%]</a></li> -[% ELSE %] - <div class="menuInactive2">[%|loc%]Post[%END%]</div><br /> -[% END %] - -[% IF action == 'rss_request' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/rss_request/[% list %]" >[%|loc%]RSS[%END%]</a></li> - -[% IF shared == 'exist' %] - [% IF may_d_read %] - [% IF action == 'd_read' || action == 'd_edit' || action == 'd_properties' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/d_read/[% list %]/" >[%|loc%]Shared documents[%END%]</a></li> - [% ELSE %] - <div class="menuInactive2">[%|loc%]Shared documents[%END%]</div><br /> - [% END %] -[% END %] - -[% IF may_review %] -[% IF action == 'review' %][% SET class = 'menuLinksCurrentPage' %][% ELSE %][% SET class = 'menuLinks' %][% END %] -<li class="[% class %]"><a href="[% path_cgi %]/review/[% list %]" >[%|loc%]Review members[%END%]</a></li> - -[% END %] - </div> -</div> -<!-- end list_menu.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/list_panel.tt2 b/sympa-6.1.20-src/web_tt2/list_panel.tt2 deleted file mode 100644 index bd579d80d194d88f34a33ef3a56ebd7da458b14c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/list_panel.tt2 +++ /dev/null @@ -1,39 +0,0 @@ -<!-- $Id: list_panel.tt2 10068 2013-12-29 02:49:43Z sikeda $ --> - -<div class="list_panel"> - -<ul> - [% IF list_status == 'closed' || list_status == 'family_closed' %] - <li class="menuLinks"><span class="bg_color_error">[%|loc%]Closed list[%END%]</span></li> - [% ELSIF list_status == 'pending' %] - <li class="menuLinks"><span class="bg_color_error">[%|loc%]List not yet activated[%END%]</span></li> - [% ELSIF list_status == 'error_config' %] - <li class="menuLinks"><span class="bg_color_error">[%|loc%]Erroneous configuration[%END%]</span></li> - [% END %] - <li class="menuLinks">[%|loc%]Subscribers:[%END%] [% total %]</li> - <li class="menuLinks">[% IF is_priv %]<span>([%|loc%]Error rate:[%END%][% bounce_rate %] %)</span>[% END %]</li> - <li class="menuLinks">[%|loc%]Owners[%END%]</li> - [% FOREACH o = owner %] - [% IF o.value.visibility != 'conceal' %] - [% IF o.value.gecos %]<span>[% o.value.gecos %]</span>[% ELSE %]<span>[% o.value.local %]</span>[% END %]<br /> - [% END %] - [% END %] - - [% IF editor %]<li class="menuLinks">[%|loc%]Moderators[%END%]</li>[% END %] - [% FOREACH e = editor %] - [% IF e.value.visibility != 'conceal' %] - [% IF e.value.gecos %]<span>[% e.value.gecos %]</span>[% ELSE %]<span>[% e.value.local %]</span>[% END %]<br /> - [% END %] - [% END %] - [% IF list_as_x509_cert %]<br /><a href="[% path_cgi %]/load_cert/[% list %]">[%|loc%]Load certificate[%END%]</a><br />[% END %] - <br/> - [% IF protection_type == 'javascript' %] - <li class="menuLinks">[% hidden_head %]<a href=\"mailto:[% list %]-request[% hidden_at %][% domain %]\">[%|loc%]Contact owners[%END%]<\/a>[% hidden_end %]</li> - [% ELSE %] - <li class="menuLinks"><a href="mailto:[% hidden_head %][% list %]-request[% hidden_at %][% domain %][% hidden_end %]">[%|loc%]Contact owners[%END%]</a></li> - [% END %] -</ul> - -</div> - -<!-- end list_panel.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/lists.tt2 b/sympa-6.1.20-src/web_tt2/lists.tt2 deleted file mode 100644 index de33810e44557b0976ba215c471d4aaf5f6d65be..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/lists.tt2 +++ /dev/null @@ -1,75 +0,0 @@ -<!-- $Id: lists.tt2 5956 2009-07-10 08:10:56Z lumineau $ --> - -[% letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','others' ] %] - - -[% IF action == 'search_list' %] - [%|loc(occurrence)%]%1 occurrence(s) found[%END%]<br /><br /> -[% ELSIF action == 'search_user' %] - [%|loc(email)%]<strong>%1</strong> is subscribed to the following mailing lists[%END%] -[% END %] - -[% IF which %] - - -<div class="block"> -<div class="columns"> - -[% FOREACH letter IN letters %] -[% IF orderedlist.$letter.0 %] -<a name="[% letter %]" /> -[% END %] -<div> - [% FOREACH listname IN orderedlist.$letter %] -<ul class="listenum" > - - <li class="listenum"> - [% IF which.$listname.admin %]<a class="actionMenuLinks" href="[% path_cgi %]/admin/[% listname %]" >[%|loc%]admin[%END%]</a>[% END %] - <a href="[% path_cgi %]/info/[% listname %]" ><strong>[% hidden_head %][% listname %][% hidden_at %][% which.$listname.host %][% hidden_end %]</strong></a><br /> - </li> - -</ul> -<p class="listenum" >[% which.$listname.subject %]</p> - - [% IF which.$listname.admin %] -<div style="margin:0 0 2.5em 1.5em"> - <div class="admin_cmd"><a href="[% path_cgi %]/edit_list_request/[% listname %]">[%|loc%]Edit List Config[%END%]</a></div> - <div class="admin_cmd"><a href="[% path_cgi %]/editfile/[% listname %]">[%|loc%]Customizing[%END%]</a></div> - <div class="admin_cmd"><a href="[% path_cgi %]/review/[% listname %]">[%|loc%]Manage Subscribers[%END%]</a></div> - [% IF conf.use_blacklist != 'none' %] - <div class="admin_cmd"><a href="[% path_cgi %]/blacklist/[% listname %]" >[%|loc%]Blacklist[%END%]</a></div> - [% END %] - <div class="admin_cmd"><a href="[% path_cgi %]/reviewbouncing/[% listname %]">[%|loc%]Bounces[%END%]</a></div> - [% IF is_priv || is_listmaster %] - <div class="admin_cmd"><a href="[% path_cgi %]/viewlogs/[% listname %]/first" >[%|loc%]Logs[%END%]</a></div> - [% END %] -<br /> -</div> - [% END %] -[% END %] - -</div> - - [% END %] - - - - - <br /> - - [% IF action == 'which' %] - [% IF ! which %] - <span class="color_dark">[%|loc(user.email)%]No subscriptions with address <strong>%1</strong>![%END%]</span> - <br /> - [% END %] - - [% END %] -[% ELSE %] -<p>[%|loc%]No mailing list available.[%END%]</p> -[% END %] - -</div> - -</div> - -<!-- end lists.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/login.tt2 b/sympa-6.1.20-src/web_tt2/login.tt2 deleted file mode 100644 index f670732058a3216147dbc7ca10c7514bb445a861..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/login.tt2 +++ /dev/null @@ -1,4 +0,0 @@ -<!-- $Id: login.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - -[%|loc(user.email)%]You have logged in with email address %1[%END%].<br /> -<!-- end login.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/loginbanner.tt2 b/sympa-6.1.20-src/web_tt2/loginbanner.tt2 deleted file mode 100644 index d9dc9d733e6487fbcfd7bb7434c6013550e6fbd3..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/loginbanner.tt2 +++ /dev/null @@ -1,63 +0,0 @@ -<!-- $Id: loginbanner.tt2 7441 2012-07-03 04:03:50Z sikeda $ --> - - <div id="Identity_not_connect"> - [% IF use_sso %] - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="previous_action" value="[% previous_action %]" /> - <input type="hidden" name="previous_list" value="[% previous_list %]" /> - <input type="hidden" name="referer" value="[% referer %]" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="action" value="sso_login" /> - [% IF sso_number == 1 %] - [% FOREACH server = sso %] - <input type="hidden" name="auth_service_name" value="[% server.key %]" /> - <input class="MainMenuLinks" type="submit" name="action_sso_login" value="[% server.value %]" /> - [% END %] - [% ELSE %] - <label for="auth_service_name">[%|loc%]To login, select your organization authentication server below:[%END%] </label> - <select id="auth_service_name" name="auth_service_name" onchange="this.form.submit();"> - [% FOREACH server = sso %] - <option value="[% server.key %]">[% server.value %]</option> - [% END %] - </select> - <input class="MainMenuLinks" type="submit" name="action_sso_login" value="[%|loc%]Go[%END%]" /> - [% END %] - </fieldset> - </form> - [% END %] - - [% IF use_passwd == '1' %] - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="previous_action" value="[% previous_action %]" /> - <input type="hidden" name="previous_list" value="[% previous_list %]" /> - <input type="hidden" name="referer" value="[% referer %]" /> - <input type="hidden" name="list" value="[% list %]" /> - - <input type="hidden" name="action" value="login" /> - <label for="email_login">[%|loc%]email address:[%END%]</label> - <input type="text" name="email" id="email_login" size="28" value="[% unauthenticated_email %]" /> - <label for="passwd" >[%|loc%]password:[%END%]</label> - <input type="password" name="passwd" id="passwd" size="8" /> - <input class="MainMenuLinks" type="submit" name="action_login" value="[%|loc%]Login[%END%]" /> - </fieldset> - </form> - [% END %] - - -[% IF use_passwd == '1' %] -[% IF authentication_info_url %] - <a class="menuLinks" href="[%authentication_info_url%]">[%|loc%]Authentication help[% END %]</a><br /> -[% ELSE %] - <div class="remember"> - <b> - <a href="[% path_cgi %]/firstpasswd/[% escaped_init_email %]">[%|loc%]First login?[%END%]</a><br /> - <a href="[% path_cgi %]/renewpasswd/[% escaped_init_email %]">[%|loc%]Lost password?[%END%]</a> - </b> - </div> -[% END %] -[% END %] - - </div> -<!-- end loginbanner.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/loginrequest.tt2 b/sympa-6.1.20-src/web_tt2/loginrequest.tt2 deleted file mode 100644 index 33f2204328f2b7e6a2fc37fbb016279d91d663c5..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/loginrequest.tt2 +++ /dev/null @@ -1,8 +0,0 @@ -<!-- $Id: loginrequest.tt2 5735 2009-05-13 14:21:17Z lumineau $ --> -<div class="block"> - - [%|loc%]In order to perform a privileged operation (one that requires your email address), you need to login.[%END%] - [% PROCESS 'loginbanner.tt2' %] - -</div> -<!-- end loginrequest.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/ls_templates.tt2 b/sympa-6.1.20-src/web_tt2/ls_templates.tt2 deleted file mode 100644 index ca30d109d05c44bf354ffb3e2951d3b69313304c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/ls_templates.tt2 +++ /dev/null @@ -1,188 +0,0 @@ -<!-- $Id: ls_templates.tt2 10060 2013-12-26 05:21:03Z sikeda $ --> - -<h2>[%|loc%]Template edition system[%END%]</h2> - -<div id="template_editor"> - -[%|loc%]This page is suggested in order to edit or create mail or web tt2 templates.[%END%] - -[%|loc%]Priority rules for template selection: -<ul> -<li>IF list context defined, apply list template if exist</li> -<li>ELSE apply robot defined template if exist</li> -<li>ELSE apply locally defined template if exist</li> -<li>ELSE apply template included in the distribution (these must not be edited because Sympa's update will over write these files)</li> -</ul>[%END%] -<br /> -[%|loc%]First you may list a category of templates; the list should include a default template and may include any templates designated for a particular list. You will then have an oportunity to copy and edit templates for the current robot or the named list.[%END%]<br /> - -<form action="[% path_cgi %]/ls_templates" method="post"> -<fieldset> -<ul> -<li>[%|loc%]Select templates type:[%END%] - <input id="webormail.web" type="radio" name="webormail" value="web" [% IF webormail == 'web' %]checked="checked"[% END %] /><label for="webormail.web">[%|loc%]web[%END%]</label> - <input id="webormail.mail" type="radio" name="webormail" value="mail" [% IF webormail == 'mail' %]checked="checked"[% END %] /><label for="webormail.mail">[%|loc%]mail[%END%]</label> -</li> -<li><label for="list">[%|loc%]Select a list:[%END%]</label> <input id="list" type="text" name="list" value="[% list %]"/></li> -<li><input class="MainMenuLinks" type="submit" name="action_ls_templates" value="[%|loc%]Reload[%END%]" /></li> -</ul> -</fieldset> -</form> - -</div> - -<p> - -[% IF templates %] -<table summary="[%|loc%]This table contain all templates you can copy or see[%END%]" class="ls_template"> -<tr> -<th>[%|loc%]template name[%END%]</th> -<th colspan="[% colspan_per_level.distrib %]">[%|loc%]default[%END%]</th> -<th colspan="[% colspan_per_level.site %]">[%|loc%]site[%END%]</th> -<th colspan="[% colspan_per_level.robot %]">[%|loc%]robot[%END%]</th> -<th colspan="[% colspan_per_level.list %]">[%|loc(list)%]list %1[%END%]</th> -</tr> -[% SET dark = 1 %] -[% END %] -<th> </th> - -<!-- print list of languages --> -[% FOREACH lang = lang_per_level.distrib %] -[%- IF lang.key == 'default' -%] -<th> </th> -[%- ELSE -%] -<th class="LanguageNeutral" -lang="[%lang.value.lang_tag%]" xml:lang="[%lang.value.lang_tag%]" ->[% lang.value.title %]</th> -[%- END %] -[% END %] - -[% FOREACH lang = lang_per_level.site %] -[%- IF lang.key == 'default' -%] -<th> </th> -[%- ELSE -%] -<th class="LanguageNeutral" -lang="[%lang.value.lang_tag%]" xml:lang="[%lang.value.lang_tag%]" ->[% lang.value.title %]</th> -[%- END %] -[% END %] - -[% FOREACH lang = lang_per_level.robot %] -[%- IF lang.key == 'default' -%] -<th> </th> -[%- ELSE -%] -<th class="LanguageNeutral" -lang="[%lang.value.lang_tag%]" xml:lang="[%lang.value.lang_tag%]" ->[% lang.value.title %]</th> -[%- END %] -[% END %] - -[% FOREACH lang = lang_per_level.list %] -[%- IF lang.key == 'default' -%] -<th> </th> -[%- ELSE -%] -<th class="LanguageNeutral" -lang="[%lang.value.lang_tag%]" xml:lang="[%lang.value.lang_tag%]" ->[% lang.value.title %]</th> -[%- END %] -[% END %] - -[% FOREACH file = templates %] - [% IF dark == '1' %] - <tr>[% SET dark = 0 %] - [% ELSE %] - <tr class="color0">[% SET dark=1 %] - [% END %] - <td>[% file.key %]</td> - - [% FOREACH lang = file.value.distrib %] - <td class="text_center"> - [% IF lang.value %] - <form action="[% path_cgi %]/edit_template" method="post"> - <fieldset> - <input type="hidden" name="template_path" value="[% lang.value %]" /> - <input type="hidden" name="template_name" value="[% file.key %]" /> - <input type="hidden" name="scope" value="distrib" /> - <input type="hidden" name="tpl_lang" value="[% lang.key %]" /> - <input type="hidden" name="webormail" value="[% webormail %]" /> - <input class="MainMenuLinks" type="submit" name="action_view_template" value="[%|loc%]view[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_copy_template" value="[%|loc%]cp[% END %]" /> - </fieldset> - </form></li> - </ul> - [% END %] - </td> -[% END %] - -[% FOREACH lang = file.value.site %] - <td class="text_center"> - [% IF lang.value %] - <form action="[% path_cgi %]/edit_template" method="post"> - <fieldset> - <input type="hidden" name="template_name" value="[% file.key %]" /> - <input type="hidden" name="template_path" value="[% lang.value %]" /> - <input type="hidden" name="scope" value="site" /> - <input type="hidden" name="tpl_lang" value="[% lang.key %]" /> - <input type="hidden" name="webormail" value="[% webormail %]" /> - <input class="MainMenuLinks" type="submit" name="action_edit_template" value="[%|loc%]edit[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_copy_template" value="[%|loc%]cp[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_remove_template" value="[%|loc%]rm[% END %]" onclick="return request_confirm('[% FILTER escape_quote %][%|loc(lang.value)%]Do you really want to remove %1?[%END%][%END%]');" /> - </fieldset> - </form> - [% END %] - </td> - [% END %] - - [% IF default_robot %] - <td></td> - [% ELSE %] -[% FOREACH lang = file.value.robot %] - <td class="text_center"> - [% IF lang.value %] - <form action="[% path_cgi %]/edit_template" method="post"> - <fieldset> - <input type="hidden" name="template_name" value="[% file.key %]" /> - <input type="hidden" name="template_path" value="[% lang.value %]" /> - <input type="hidden" name="scope" value="robot" /> - <input type="hidden" name="tpl_lang" value="[% lang.key %]" /> - <input type="hidden" name="webormail" value="[% webormail %]" /> - <input class="MainMenuLinks" type="submit" name="action_edit_template" value="[%|loc%]edit[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_copy_template" value="[%|loc%]cp[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_remove_template" value="[%|loc%]rm[% END %]" onclick="return request_confirm('[% FILTER escape_quote %][%|loc(lang.value)%]Do you really want to remove %1?[%END%][%END%]');"/> - </fieldset> - </form> - [% END %] - </td> - [% END %] - [%END%] - - [% IF list %] - [% FOREACH lang = file.value.list %] - <td class="text_center"> - [% IF lang.value %] - <form action="[% path_cgi %]/edit_template" method="post"> - <fieldset> - <input type="hidden" name="template_name" value="[% file.key %]" /> - <input type="hidden" name="template_path" value="[% lang.value %]" /> - <input type="hidden" name="scope" value="list" /> - <input type="hidden" name="tpl_lang" value="[% lang.key %]" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="webormail" value="[% webormail %]" /> - <input class="MainMenuLinks" type="submit" name="action_edit_template" value="[%|loc%]edit[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_copy_template" value="[%|loc%]cp[% END %]" /> - <input class="MainMenuLinks" type="submit" name="action_remove_template" value="[%|loc%]rm[% END %]" onclick="return request_confirm('[% FILTER escape_quote %][%|loc(lang.value)%]Do you really want to remove %1?[%END%][%END%]');"/> - </fieldset> - </form> - [% END %] - </td> - [%END%] - [% ELSE %] - <td></td> - [% END %] -[% END %] -[% IF templates %] -</td></tr> -</table> -[% END %] -</p> -<!-- end ls_templates.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/maintenance.tt2 b/sympa-6.1.20-src/web_tt2/maintenance.tt2 deleted file mode 100644 index e1bdefede28f3b3d08473a2e15b990b2cad0524d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/maintenance.tt2 +++ /dev/null @@ -1,3 +0,0 @@ -<!-- $Id: maintenance.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> -[%|loc%]The mailing list server is in maintenance mode, no operation can be performed during this period.[%END%] -<!-- end maintenance.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/manage_template.tt2 b/sympa-6.1.20-src/web_tt2/manage_template.tt2 deleted file mode 100644 index 40578f97f92883e892b44e94cfae4189f3c8321c..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/manage_template.tt2 +++ /dev/null @@ -1,91 +0,0 @@ -<!-- $Id: manage_template.tt2 5269 2008-08-22 15:52:19Z peter.hart $ --> - -<h2>[%|loc%]Modify or delete existing rejection messages[%END%]</h2> -<p> - -[% IF available_files %] - -<table border="1"> -<table summary="[%|loc%]Listing rejection messages[%END%]" class="listOfItems"> - <tr><th colspan="4">[%|loc%]Listing rejection messages[%END%]</th></tr> - <tr><th>[%|loc%]Use as default[%END%]</th><th>[%|loc%]Message name[%END%]</th><th colspan="2">[%|loc%]Operation[%END%]</th></tr> - - <form action="[% path_cgi %]" method="post" name="manage_templates"> - <fieldset> - <input type="hidden" name="action" value="manage_template"> - <input type="hidden" name="list" value="[% list %]"> - <input type="hidden" name="new_default" value="[% default_reject_template %]"> - - [% SET dark = 1 %] - [% FOREACH file = available_files %] - [% IF dark == '1' %] - [% dark = '0' %] - <tr> - [% ELSE %] - [% dark = '1' %] - <tr class="color0"> - [% END %] - <td align="center"> - <input type="radio" name="subaction_setdefault" value="[% file %]" [% IF file == default_reject_template %] checked="checked" [% ELSE %] onchange="this.form.new_default.value = '[%file%]' ; this.form.submit();" [% END %]> - </td> - <td> - [% file %] - </td> - <td align="center"> - <a href="[% path_cgi %]/manage_template/modify/[% list %]/[% file %]" class="MainMenuLinks">[%|loc%]Edit[%END%]</a> - </td> - <td align="center"> - <a href="[% path_cgi %]/manage_template/delete/[% list %]/[% file %]" class="MainMenuLinks" onclick="return request_confirm('[% FILTER escape_quote %][%|loc(file)%]Do you really want to delete message %1?[%END%][%END%]')">[%|loc%]Delete[%END%]</a> - </td> - </tr> - [% END %] -</fieldset> -</form> - -[% ELSE %] -<tr><td colspan="4">[%|loc%]There are currently no Rejection Messages available[%END%]<td> -[% END %] - -</table> -</table> - -[%IF content %] - -<form action="[% path_cgi %]" method="post" name="edit_templates"> -<p> -<h2>[%|loc%]Edit[%END%] [% message_template %]</h2> -</p> -<p> -<!-- [%|loc()%]Message Name:[%END%]<input type="text" name="message_template" value="[% message_template %]"> --> -<!-- <input class="MainMenuLinks" type="submit" name="subaction_default" value="[%|loc%]Default Message[%END%]" /> --> - -<textarea name="template_content" cols="50" rows="10" wrap="soft"> -[% content %]</textarea> -</p> -<p> -<input class="MainMenuLinks" type="submit" name="subaction_save" value="[%|loc%]Save Message[%END%]" /> -<input class="MainMenuLinks" type="submit" name="action_manage_template" value="[%|loc%]Cancel[%END%]" /> -<input type="hidden" name="message_template" value="[% message_template %]"/> -<input type="hidden" name="list" value="[% list %]"/> -<input type="hidden" name="action" value="manage_template"/> -</p> -</fieldset> -</form> - -[% ELSE %] - -<h2>[%|loc%]Create new rejection messages[%END%]</h2> - -<form action="[% path_cgi %]" method="post" name="edit_templates"> -<fieldset> -<input type="hidden" name="list" value="[%list%]"> -<input type="hidden" name="action" value="manage_template"> - -<label for="new_template_name">[%|loc%]New message name:[%END%]</label> <input id="new_template_name" type="text" name="new_template_name"> <input type="submit" name="subaction_create_new" value="[%|loc%]create[%END%]" class="MainMenuLinks"> - -</fieldset> -</form> - -[% END %] - -<!-- end manage_template.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/menu.tt2 b/sympa-6.1.20-src/web_tt2/menu.tt2 deleted file mode 100644 index 0e9a3db3d89de5b9e3330016945aa286e0e86307..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/menu.tt2 +++ /dev/null @@ -1,45 +0,0 @@ -<!-- $Id: menu.tt2 7448 2012-07-05 14:45:37Z david.verdin $ --> - -<div class="navBar printNone"> -<ul id="MainMenuLinks"> - -[% IF may_create_list %] - [% IF action == 'create_list_request' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] <li><a class="[% class %]" href="[% path_cgi %]/create_list_request" >[%|loc%]Create list[%END%]</a></li> -[% END %] - -[% IF is_listmaster %] - [% IF action == 'serveradmin' or action == 'skinsedit' or action == 'get_pending_lists' or action == 'get_closed_lists' or action == 'get_latest_lists' or action == 'get_inactive_lists' or action == 'edit_config' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li><a class="[% class %]" href="[% path_cgi %]/serveradmin" >[%|loc%]Sympa admin[%END%]</a></li> -[% END %] - - [% IF action == 'lists' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] -<li><a class="[% class %]" href="[% path_cgi %]/lists">[%|loc%]List of lists[%END%]</a></li> - - [% IF action == 'home' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] -<li><a class="[% class %]" href="[% path_cgi %]/home">[%|loc%]Home[%END%]</a></li> - -[% IF action == 'help' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li> <a class="[% class %]" href="[% path_cgi %]/help" >[%|loc%]Help[%END%]</a></li> - -[% IF conf.main_menu_custom_button_1_title %] - <li> <a class="MainMenuLinks" [% IF conf.main_menu_custom_button_1_target %] target ="[% conf.main_menu_custom_button_1_target %]"[% END %] href="[% conf.main_menu_custom_button_1_url %]">[% conf.main_menu_custom_button_1_title %]</a></li> -[%END%] -[% IF conf.main_menu_custom_button_2_title %] - <li> <a class="MainMenuLinks" [% IF conf.main_menu_custom_button_2_target %] target ="[% conf.main_menu_custom_button_2_target %]"[% END %] href="[% conf.main_menu_custom_button_2_url %]">[% conf.main_menu_custom_button_2_title %]</a></li> -[%END%] -[% IF conf.main_menu_custom_button_3_title %] - <li> <a class="MainMenuLinks" [% IF conf.main_menu_custom_button_3_target %] target ="[% conf.main_menu_custom_button_3_target %]"[% END %] href="[% conf.main_menu_custom_button_3_url %]">[% conf.main_menu_custom_button_3_title %]</a></li> -[%END%] - -[% FOREACH alf IN conf.automatic_list_families.keys %] - [% IF session.is_family_owner.$alf %] - [% IF action == 'automatic_lists_request' && family.name == conf.automatic_list_families.$alf.name %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] <li><a class="[% class %]" href="[% path_cgi %]/automatic_lists_request/[% conf.automatic_list_families.$alf.name %]" >[% conf.automatic_list_families.$alf.display %]</a></li> - [% END %] -[% END %] - -</ul> - - -</div> - -<!-- end menu.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/menu_search.tt2 b/sympa-6.1.20-src/web_tt2/menu_search.tt2 deleted file mode 100644 index b27cc0bf4c0f9d4900728131ab386f16e4151006..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/menu_search.tt2 +++ /dev/null @@ -1,14 +0,0 @@ -<!-- $Id: $ --> -<div class="MenuBlock menu_search"> - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="text" size="14" id="filter" name="filter" value="[% filter %]" title="[%|loc%]Enter a list name[%END%]"/> - <input type="hidden" name="action" value="search_list" /> - <input class="MainMenuLinks" type="submit" name="action_search_list" value="[%|loc%]Search lists[%END%]" onclick="return isNotEmpty('filter')" /> - <br /> - </fieldset> -</form> - -</div> -<!-- end menu_search.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/modindex.tt2 b/sympa-6.1.20-src/web_tt2/modindex.tt2 deleted file mode 100644 index 917a8ea6944ec0dc1dfd94c5f260151b59b21460..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/modindex.tt2 +++ /dev/null @@ -1,206 +0,0 @@ -<!-- $Id: modindex.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> -<div class="block"> - -[% IF mod_total %] -<!-- moderation of messages --> -<form class="noborder" action="[% path_cgi %]" method="post" name="moderate_mails"> -<fieldset> - <input type="hidden" name="list" value="[% list %]" /> -<h2>[%|loc%]Listing messages to moderate[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#moderate" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - -<p> - [%- IF topic_required -%] - -<input type="submit" name="action_distribute" value="[%|loc%]Distribute[%END%]" onclick="return checkbox_check_topic(moderate_mails)"/> -</p> -<p> - - [%- ELSE -%] -<input class="MainMenuLinks" type="submit" name="action_distribute" value="[%|loc%]Distribute[%END%]" /> -</p> -<p> - -[%- END -%] - - <input class="MainMenuLinks" type="submit" name="action_reject" value="[%|loc%]Reject[%END%]" onclick="return check_reject_spams(document.moderate_mails,'[% FILTER escape_quote %][%|loc %]You should probably not reject message detected as spam with notification because the message sender is probably spoofed. Do you really want to reject those messages with notification?[%END%][%END%]',document.moderate_mails.quiet)" /> - -<input type="hidden" name="from_modindex" value="from_modindex" /> - - <select name="message_template"> - - <option value="reject">[%|loc %]Server default rejection message[%END%]</option> - [% FOREACH file = available_files %] - <option value="reject_[% file %]" [% IF file == default_reject_template %] selected="selected" [%END%] > [% file %]</option> - [%- END- %] - </select> -<br /> - - -<input type=checkbox name="quiet">[%|loc %]Reject without notification [%END%]</option> -<br /> -<input type=checkbox name="blacklist">[%|loc %]Add to blacklist[%END%]</option> - - -</p> -<p> - - - [%- IF request_topic -%] - <br /> - [%|loc%]This list is configured to require topic(s).[%END%] - <br /> - [%|loc%]Please select one or more topic(s) that correspond to the messages you wish to distribute:[%END%] - <br /> - [% FOREACH t = available_topics %] - <input id="topic_[%t.name%]" type="checkbox" name="topic_[%t.name%]" value="1" /> <label for="topic_[%t.name%]">[% t.title %] </label> - <br /> - [%- END- %] - <br /> - [%- END -%] - - <table summary="[%|loc%]Listing messages to moderate[%END%]" class="listOfItems"> - <tr> - [%- IF conf.antispam_feature == 'on' -%] - <th colspan="2"><a href="#" onclick="toggle_selection(document.moderate_mails.id);return false;" title="[%|loc%]Toggle Selection[%END%]">«»</a></strong></th> - [%- ELSE -%] - <th>X</th> - [%- END -%] - <th>[%|loc%]Date[%END%]</th> - <th>[%|loc%]Author[%END%]</th> - <th>[%|loc%]Subject[%END%]</th> - <th>[%|loc%]Size[%END%]</th> - </tr> - [% FOREACH msg = spool %] - [% IF dark == '1' %] - [% dark = '0' %] - <tr> - [% ELSE %] - [% dark = '1' %] - <tr class="color0"> - [% END %] - <td> - [%- IF msg.value.spam_status == 'spam' -%][% idname = 'idspam' %][% therissomespam = '1' %][% ELSE %][% idname = 'id' %][% therissomeham = '1' %][% END %] - <input type="checkbox" name="[% idname %]" value="[% msg.key %]" /> - </td> - [%- IF conf.antispam_feature == 'on' -%] - <td> - [%- IF msg.value.spam_status == 'spam' -%]<img src="[% icons_url %]/junk.png" alt="junk" /> - [%- ELSE -%] - [%- END -%] - [%- END -%] - </td> - <td> - [% IF msg.value.date %] - [% msg.value.date %] - [% ELSE %] - - [% END %] - </td> - <td>[% msg.value.from %]</td> - <td> - [% IF msg.value.subject == 'no_subject' %] - <a href="[% path_cgi %]/viewmod/[% list %]/[% msg.key %]">[%|loc%]No subject[%END%]</a> - [% ELSE %] - <a href="[% path_cgi %]/viewmod/[% list %]/[% msg.key %]">[% msg.value.subject %]</a> - [% END %] - </td> - <td>[% msg.value.size %] kb</td> - </tr> - [% END %] - </table> -[% IF mod_message >= 10 %] - [%- IF topic_required -%] - <input type="submit" name="action_distribute" value="[%|loc%]Distribute[%END%]" onclick="return checkbox_check_topic(moderate_mails)"/> - [%- ELSE -%] - <input class="MainMenuLinks" type="submit" name="action_distribute" value="[%|loc%]Distribute[%END%]" /> - [% END %] - <input class="MainMenuLinks" type="submit" name="action_reject.quiet" value="[%|loc%]Reject[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_reject" value="[%|loc%]Notified reject[%END%]" /> -[% IF conf.use_blacklist != 'none' %] - <input class="MainMenuLinks" type="submit" name="action_reject.blacklist" value="[%|loc%]Reject and blacklist sender[%END%]" /> -[% END %] -<br /> -[%- END- %] - -<input class="MainMenuLinks" type="button" value="[%|loc%]Toggle Selection[%END%]" onclick="toggle_selection(document.moderate_mails.id); toggle_selection(document.moderate_mails.idspam)" /> - -[%- IF therissomespam -%] - <input class="MainMenuLinks" type="button" value="[%|loc%]Toggle spams[%END%]" onclick="toggle_selection(document.moderate_mails.idspam)" /> -[%- END -%] -<br /> - -</fieldset> -</form> - - -[%END%] -<br /> -<!-- moderation of document shared --> -[% IF mod_total_shared %] -<form class="noborder" action="[% path_cgi %]" method="post" name="moderate_shared"> -<fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <h2>[%|loc%]Listing of shared documents to moderate[%END%]</h2> - - <input class="MainMenuLinks" type="submit" name="action_d_install_shared" value="[%|loc%]Install[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_d_reject_shared.quiet" value="[%|loc%]Reject[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_d_reject_shared" value="[%|loc%]Notified reject[%END%]" /> - <br /> - <table summary="[%|loc%]Listing of documents shared to moderate[%END%]" class="listOfItems"> - <tr> - <th>X</span></th> - <th>[%|loc%]Date[%END%]</th> - <th>[%|loc%]Author[%END%]</th> - <th>[%|loc%]Path[%END%]</th> - <th>[%|loc%]Size[%END%] </th> - </tr> - [% FOREACH f = info_doc_mod %] - <tr> - <td> - <input type="checkbox" name="id" value="[% f.path %][% f.fname %]" /> - </td> - <td> - [% IF f.date %] - [% f.date %] - [% ELSE %] - - [% END %] - </td> - <td>[% f.author %]</td> - <td> - <a href="[% path_cgi %]/d_read/[% list %][% f.escaped_path %][% f.escaped_fname %]">[% f.visible_path %][% f.visible_fname %]</a> - </td> - <td>[% f.size %] kb</td> - </tr> - [% END %] - </table> - -<br /> -[% IF conf.use_blacklist != 'none' %] - <input class="MainMenuLinks" type="submit" name="action_blacklist" value="[%|loc%]edit blacklist[%END%]" /> -[%- END- %] - <input class="MainMenuLinks" type="button" value="[%|loc%]Toggle Selection[%END%]" onclick="toggle_selection(document.moderate_shared.id)" /><br /> - - <input class="MainMenuLinks" type="submit" name="action_d_install_shared" value="[%|loc%]Install[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_d_reject_shared.quiet" value="[%|loc%]Reject[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_d_reject_shared" value="[%|loc%]Notified reject[%END%]" /> -</fieldset> -</form> - -[% END %] - -<h2>[%|loc%]Moderation management[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#moderate" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> - -<p> -<form class="noborder" action="[% path_cgi %]" method="post" name="moderation_management"> -<fieldset> - <input type="hidden" name="list" value="[% list %]" /> -[% IF conf.use_blacklist != 'none' %] - <input class="MainMenuLinks" type="submit" name="action_blacklist" value="[%|loc%]edit blacklist[%END%]" /> -[% END %] - <input class="MainMenuLinks" type="submit" name="action_manage_template" value="[%|loc%]Manage rejection messages[%END%]" <br /> -</fieldset></form> -</p> - -</div> -<!-- end modindex.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/nav.tt2 b/sympa-6.1.20-src/web_tt2/nav.tt2 deleted file mode 100644 index aacca52603814898f2073e1fc01b3d9e790fc863..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/nav.tt2 +++ /dev/null @@ -1,124 +0,0 @@ -<!-- $Id: nav.tt2 5675 2009-04-28 13:59:12Z david.verdin $ --> -[% IF action == 'create_list_request' %] -<div id="nav"> - <ul> - <li class="MainMenuLinksCurrentPage"><a href="#">[%|loc%]Copy an existing list.[%END%]</a></li> - <li class="MainMenuLinksCurrentPage"><a href="#">[%|loc%]Create a list using a template[%END%]</a></li> - </ul> -</div> -[% END %] - -[% IF action == 'serveradmin' or action == 'skinsedit' or action == 'edit_config' or action == 'get_pending_lists' or action == 'get_closed_lists' or action == 'get_latest_lists' or action == 'get_inactive_lists' %] -<div id="nav"> - <ul> -[% IF (subaction == '' or subaction == 'm_lists') and action != 'skinsedit' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/m_lists">[%|loc%]Lists[%END%]</a></li> -[% IF subaction == 'users' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/users">[%|loc%]Users[%END%]</a></li> -[% IF subaction == 'archives' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/archives">[%|loc%]Archives[%END%]</a></li> -[% IF subaction == 'logs' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/logs">[%|loc%]System log[%END%]</a></li> -[% IF subaction == 'templates' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/templates">[%|loc%]Templates[%END%]</a></li> -[% IF action == 'skinsedit' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/skinsedit">[%|loc%]Skins, CSS and colors[%END%]</a></li> -[% IF main_robot %] -[% IF subaction == 'vhosts' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/vhosts">[%|loc%]Virtual Robots[%END%]</a></li> -[% IF action == 'edit_config' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_config">[%|loc%]Edit Robot Config[%END%]</a></li> -[% END %] -[% IF families -%] -[% IF subaction == 'families' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/families">[%|loc%]Families[%END%]</a></li> -[% END %] -[% IF subaction == 'translation' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/translation">[%|loc%]Translating Sympa[%END%]</a></li> -[% IF subaction == 'tracker' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/serveradmin/tracker">[%|loc%]Submitting a bug, a feature request[%END%]</a></li> - </ul> -</div> -[% END %] - -[% IF action == 'lists' %] -[% letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','others' ] %] -<div id="nav"> - <ul> -[% FOREACH letter IN letters %] - [% IF orderedlist.$letter.0 %] - <li class="MainMenuLinks"><a href="#[%letter%]">[%IF letter == 'others'%][%|loc%]others[%END%][%ELSE%][%letter%][%END%]</a></li> - [% ELSE %] - <li class="nolink">[%IF letter == 'others'%][%|loc%]others[%END%][%ELSE%][%letter%][%END%]</li> - [% END %] -[% END %] - <li class="MainMenuLinks"><a href="[% path_cgi %]/lists" >[%|loc%]all[%END%]</a> </li> - </ul> -</div> -[% END %] - -[% IF action == 'admin' || action_type == 'admin' || action == 'editfile' %] -<div id="nav"> - <ul> -[% IF action == 'edit_list_request' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]">[%|loc%]Edit List Config[%END%]</a></li> -[% IF is_owner %] -[% IF action == 'editfile' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/editfile/[% list %]">[%|loc%]Customizing[%END%]</a></li> -[% IF action == 'review' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/review/[% list %]">[%|loc%]Manage Subscribers[%END%]</a></li> -[% END %] -[% IF conf.use_blacklist != 'none' %] -[% IF action == 'blacklist' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/blacklist/[% list %]" >[%|loc%]Blacklist[%END%]</a></li> -[% END %] -[% IF is_archived %] -[% IF action == 'arc_manage' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/arc_manage/[% list %]">[%|loc%]Manage Archives[%END%]</a></li> -[% END %] -[% IF is_owner %] -[% IF action == 'reviewbouncing' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/reviewbouncing/[% list %]">[%|loc%]Bounces[%END%]</a></li> -[% END %] -[% IF is_priv || is_listmaster %] -[% IF action == 'viewlogs' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/viewlogs/[% list %]" >[%|loc%]Logs[%END%]</a></li> -[% END %] - - </ul> -</div> - -[% IF action == 'edit_list_request' %] -<div id="subnav"> - <ul> -[% IF group == 'description' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class=[% class %]><a href="[% path_cgi %]/edit_list_request/[% list %]/description" >[%|loc%]List definition[%END%]</a></li> -[% IF group == 'sending' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/sending" >[%|loc%]Sending/receiving setup[%END%]</a></li> -[% IF group == 'command' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/command" >[%|loc%]Privileges[%END%]</a></li> -[% IF group == 'archives' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/archives" >[%|loc%]Archives[%END%]</a></li> -[% IF group == 'bounces' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/bounces" >[%|loc%]Bounces[%END%]</a></li> -[% IF group == 'data_source' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/data_source" >[%|loc%]Data sources setup[%END%]</a></li> -[% IF group == 'dkim' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/dkim" >[%|loc%]DKIM[%END%]</a></li> -[% IF group == 'other' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/edit_list_request/[% list %]/other" >[%|loc%]Miscellaneous[%END%]</a></li> - </ul> -</div> -[% END %] -[% END %] - -[% IF action == 'compose_mail' %] -<div id="nav"> - <ul> - [% IF subaction == '' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/compose_mail/[% list %]">[%|loc%]Send a message[%END%]</a></li> - [% IF subaction == 'html_news_letter' %][% SET class = 'MainMenuLinksCurrentPage' %][% ELSE %][% SET class = 'MainMenuLinks' %][% END %] - <li class="[% class %]"><a href="[% path_cgi %]/compose_mail/[% list %]/html_news_letter">[%|loc%]Send an html page[%END%]</a></li> - </ul> -</div> -[% END %] - -<!-- end nav.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/notice.tt2 b/sympa-6.1.20-src/web_tt2/notice.tt2 deleted file mode 100644 index 1b9091f13e9fcd53c1f49e26e249aef9c1f5a450..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/notice.tt2 +++ /dev/null @@ -1,95 +0,0 @@ -<!-- $Id: notice.tt2 7135 2011-07-15 14:33:38Z david.verdin $ --> -<div id="noticeMsg"> - -[% IF last_login_date %] -[%|loc(last_login_host,last_login_date)%]last login from %1 (%2)[%END%]<br/> -[%END%] - -[% FOREACH notice = notices %] -[% IF notice.msg == 'sent_to_owner' %] -[%|loc%]Your request has been forwarded to the list owner[%END%] - -[% ELSIF notice.msg == 'add_performed' %] -[%|loc(notice.total)%]%1 subscribers added[%END%] - -[% ELSIF notice.msg == 'del_performed' %] -[%|loc(notice.total)%]%1 addresses have been removed[%END%] - -[% ELSIF notice.msg == 'performed' %] -[%|loc(notice.action)%]%1: action completed[%END%] - -[% ELSIF notice.msg == 'performed_soon' %] -[%|loc(notice.action)%]%1: action will complete soon[%END%] - -[% ELSIF notice.msg == 'list_config_updated' %] -[%|loc%]Configuration file has been updated[%END%] - -[% ELSIF notice.msg == 'list_purged' %] -[%|loc%]List has been purged[%END%] - -[% ELSIF notice.msg == 'list_closed' %] -[%|loc%]List has been closed[%END%] - -[% ELSIF notice.msg == 'list_restored' %] -[%|loc%]List has been restored[%END%] - -[% ELSIF notice.msg == 'upload_success' %] -[%|loc(notice.path)%]File %1 successfully uploaded![%END%] - -[% ELSIF notice.msg == 'unzip_success' %] -[%|loc(notice.path)%]File %1 unziped![%END%] - -[% ELSIF notice.msg == 'file_erased' %] -[%|loc(notice.path)%]Old file %1 has been erased[%END%] - -[% ELSIF notice.msg == to_moderate %] -[%|loc(notice.path)%]File %1 waiting for moderation[%END%] - -[% ELSIF notice.msg == 'save_success' %] -[%|loc(notice.path)%]File %1 saved[%END%] - -[% ELSIF notice.msg == 'password_sent' %] -[%|loc%]Your password has been emailed to you[%END%] - -[% ELSIF notice.msg == 'you_should_choose_a_password' %] -[%|loc%]To choose your password go to 'preferences', from the upper menu.[%END%] - -[% ELSIF notice.msg == 'no_msg_document' %] -[%|loc(notice.list)%]No message and no document to moderate for list %1[%END%] - -[% ELSIF notice.msg == 'subscribers_updated' %] -[%|loc%]The list of list members have been built/updated.[%END%] - -[% ELSIF notice.msg == 'subscribers_updated_soon' %] -[%|loc%]The list of list members will be built/updated soon (a few minutes).[%END%] - -[% ELSIF notice.msg == 'subscribers_noticed_deleted_topics' %] -[%|loc%]Concerned subscribers have been notified about deleted topics.[%END%] - -[% ELSIF notice.msg == 'add_performed' %] -[%|loc(notice.total)%]%1 addresses have been subscribed[%END%] - -[% ELSIF notice.msg == 'you_have_been_authenticated' %] -[%|loc%]You have been authenticated[%END%] - -[% ELSIF notice.msg == 'file_renamed' %] -[%|loc(notice.orig_file,notice.new_file)%]File %1 has been renamed to %2[%END%] - -[% ELSIF notice.msg == 'pending_list' %] -[%|loc%]List has been set to the pending status; listmaster need to validate it[%END%] - -[% ELSIF notice.msg == 'listname_lowercased' %] -[%|loc%]List name has been lowercased[%END%] - -[% ELSIF notice.msg == 'user_notified' %] -[%|loc(notice.notified_user)%]User %1 has been notified[%END%] - -[% ELSE %] -[% notice.msg.replace('\n','<br/>') %] - -[% END %] - -[% END %] - -</div> -<!-- end notice.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/picture_upload.tt2 b/sympa-6.1.20-src/web_tt2/picture_upload.tt2 deleted file mode 100644 index 02aceffb57d458e16282ed4e24da43babede4f20..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/picture_upload.tt2 +++ /dev/null @@ -1,33 +0,0 @@ -<!-- $Id: picture_upload.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> -[% IF pictures_display %] - -<h4>[%|loc%]Setting your picture for this list[%END%]</h4> - - - <form method="post" action="[% path_cgi %]" enctype="multipart/form-data" > - -<p>[%|loc%]You can upload your picture below; it will be available in the list review page. The picture should use a standard format (gif, jpp, jpeg or png) and its size should not exceed 100 Kb.[%END%]</p><br /> - - <fieldset> - <label for="uploaded_file"><input id="uploaded_file" type="file" name="uploaded_file"/></label> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Submit[%END%]" name="action_upload_pictures" /> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Delete[%END%]" name="action_delete_pictures" /> - <input type="hidden" name="list" value="[% list %]" /><br /><br /> - </fieldset> - </form> - [% IF pictures_url %] - <div id="pictures_block"> - <div id="large"> - <a href="[%pictures_url%]" title="[%|loc%]Open in a new window[%END%]" target="pictures"><img src="[%pictures_url%]" alt="[%|loc%]Your picture[%END%]" /></a> - <br />[%|loc%]Your picture[%END%] - </div> - <div id="small"> - <img src="[%pictures_url%]" alt="[%|loc%]Your picture in the subscribers list[%END%]" /> - <br />[%|loc%]In the members page[%END%] - </div> - <p class="spacer"></p> - </div> - [%END%] - <br /> - [% END %] -<!-- end picture_upload.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/pref.tt2 b/sympa-6.1.20-src/web_tt2/pref.tt2 deleted file mode 100644 index 3ffc1c4af165f97fbfd43fa6b7b3497b9824efbe..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/pref.tt2 +++ /dev/null @@ -1,50 +0,0 @@ -<!-- $Id: pref.tt2 10057 2013-12-25 10:22:49Z sikeda $ --> -<div class="block"> - -<h2>[%|loc%]User preferences[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/user#global_pref" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h2> -<br /> - -<form action="[% path_cgi %]" method="post"> - <fieldset> - <label>[%|loc%]Email:[%END%] </label>[% user.email %]<br /> - <label for="gecos">[%|loc%]Name:[%END%] </label><input type="text" id="gecos" name="gecos" size="30" value="[% user.gecos %]" /><br /> - <label for="lang">[%|loc%]Language:[%END%] </label><select id="lang" name="lang" class="LanguageNeutral"> - [% FOREACH l = languages %] - <option lang="[%l.value.lang_tag%]" xml:lang="[%l.value.lang_tag%]" value="[% l.key %]" [% l.value.selected %]>[% l.value.complete %]</option> - [% END %] - </select><br /> - <label for="cookie_delay">[%|loc%]Connection expiration period:[%END%] </label><select name="cookie_delay" id="cookie_delay"> - [% FOREACH period = cookie_periods %] - <option value="[% period.value %]" [% period.selected %]>[% period.desc %]</option> - [% END %] - </select><br /> <input class="MainMenuLinks" type="submit" name="action_setpref" value="[%|loc%]Submit[%END%]" /> - </fieldset> -</form> -<br /> - - -<h4>[%|loc%]Changing your email address[%END%]</h4> - -[%|loc%]You can update your email address for all your list memberships at once. If you are also list owner or list moderator your email address for these roles will also be updated.[%END%] -<form action="[% path_cgi %]" method="post"> -<fieldset> -<label for="new_email">[%|loc%]New email address:[%END%] </label><input id="new_email" name="new_email" size="25" /> -<input class="MainMenuLinks" type="submit" name="action_change_email_request" value="[%|loc%]Change Email[%END%]" /> -</fieldset> -</form> -<br /> - -<h4>[%|loc%]Changing your password[%END%]</h4> - -<form action="[% path_cgi %]" method="post"> -<fieldset> -<label for="newpasswd1">[%|loc%]New password:[%END%] </label><input type="password" name="newpasswd1" id="newpasswd1" size="25" /><br /> -<label for="newpasswd2">[%|loc%]Re-enter your new password:[%END%] </label><input type="password" name="newpasswd2" id="newpasswd2" size="25" /><br /> -<input class="MainMenuLinks" type="submit" name="action_setpasswd" value="[%|loc%]Submit[%END%]" /> -</fieldset> -</form> -<br /> - -</div> - -<!-- end pref.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/remove_arc.tt2 b/sympa-6.1.20-src/web_tt2/remove_arc.tt2 deleted file mode 100644 index 0f860f84782cb2a29442528d05c921c0dbe59f5d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/remove_arc.tt2 +++ /dev/null @@ -1,16 +0,0 @@ -<!-- $Id: remove_arc.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - -[% IF status == 'done' %] -[%|loc%]Operation successful. The message will be deleted as soon -as possible. This task may be performed in a few minutes.[%END%] -[% ELSIF status == 'no_msgid' %] -[%|loc%]Unable to find the message to delete, probably this message -was received without Message-Id. Please refer to listmaster with -complete URL of the message concerned[%END%] -[% ELSIF status == 'not_found' %] -[%|loc%]Unable to find the message to delete[%END%] -[% ELSE %] -[%|loc%]Error while deleting this message, please refer to listmaster with -complete URL of the message concerned.[%END%] -[% END %] -<!-- end remove_arc.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/rename_list_request.tt2 b/sympa-6.1.20-src/web_tt2/rename_list_request.tt2 deleted file mode 100644 index dfcf96067effe03c8d177b395375abd0fda4edaf..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/rename_list_request.tt2 +++ /dev/null @@ -1,27 +0,0 @@ -<!-- $Id: rename_list_request.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - -<h3>[%|loc%]Renaming the list[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#renamelist" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3> -<br /> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <label for="new_listname">[%|loc%]New list name:[%END%]</label> <input id="new_listname" name="new_listname" value="" /> @ - [% IF robots %] - <select name="new_robot"> - [% FOREACH vr = robots %] - <option value="[% vr.key %]" [% vr.value %]>[% vr.key %]</option> - [% END %] - </select> - [% ELSE %] - <input name="new_robot" type="hidden" value="[% robot %]" /> - [% robot %] - [% END %] -<br /> - <input class="MainMenuLinks" type="submit" name="action_rename_list" value="[%|loc%]Rename this list[%END%]" onclick="return request_confirm('[% FILTER escape_quote %][%|loc%]Do you really want to rename this list?[%END%][%END%]')" /> - </fieldset> - </form> - -<!-- end rename_list_request.tt2 --> - - - diff --git a/sympa-6.1.20-src/web_tt2/renewpasswd.tt2 b/sympa-6.1.20-src/web_tt2/renewpasswd.tt2 deleted file mode 100644 index 658957f6b1a0f6136ab8c26e50e0fe0b2f8f3a98..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/renewpasswd.tt2 +++ /dev/null @@ -1,38 +0,0 @@ -<!-- $Id: renewpasswd.tt2 4857 2008-02-28 11:09:33Z serge.aumont $ --> - <p> - -[% IF account_creation %] - [%|loc%]You requested an account creation on this list server.[%END%] -[% ELSIF login_error == 'wrong_password' %] - [%|loc%]The password you submitted is wrong. Maybe you forgot it?[%END%] -[% ELSIF login_error == 'password_reset' %] - [%|loc%]Too many wrong password were sumitted for this account. Your account as been blocked in order to protect you agains attacks. You must renew your password in order to login.[%END%] -[% ELSIF login_error == 'missing_password' %] - [%|loc%]You missed the password, please submit again. Maybe you forgot it?[%END%] -[% ELSIF login_error == 'ticket_sent' %] - [%|loc%]You will receive an email that will allow you to choose your password.[%END%] -[% ELSE %] -[% IF requestpasswd_context == 'firstpasswd' %] - [%|loc%]In order to use Sympa, you will need to define a password.[%END%] -[% ELSE %] - [%|loc%]You forgot your password, so you have to renew it.[%END%] -[% END %] -[% END %] - [%|loc%]Please submit your email address, you will receive a message that gives you access to the appropriate form in order to choose your password.[%END%] - </p> - <form class="bold_label" action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="referer" value="[% referer %]" /> - <input type="hidden" name="action" value="requestpasswd" /> - <label for="email">[%|loc%]Your e-mail address:[%END%] </label> - <input id="email" type="text" name="email" size="20" value="[% unauthenticated_email %]" /> - <input class="MainMenuLinks" type="submit" name="action_requestpasswd" -[% IF requestpasswd_context == 'firstpasswd' %] -value="[%|loc%]Request first password[%END%]" /> -[% ELSE %] -value="[%|loc%]Request new password[%END%]" /> -[% END %] - </fieldset> - </form> - -<!-- end renewpasswd.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/request_topic.tt2 b/sympa-6.1.20-src/web_tt2/request_topic.tt2 deleted file mode 100644 index 86f887208e80b5535631766508a5c4c8b362649d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/request_topic.tt2 +++ /dev/null @@ -1,35 +0,0 @@ -<!-- $Id: request_topic.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - -<form action="[% path_cgi %]" method="post" name="select_topic_msg"> -<fieldset> -[%|loc%]This list is configured to require topic(s) foreach message.[%END%] -<br /> -<label for="topic_[%t.name%]">[%|loc%]Please select one or more topic(s) that corresponds to your message below:[%END%] </label> -<br /><br /> -[% FOREACH t = available_topics %] -<input id="topic_[%t.name%]" type="checkbox" name="topic_[%t.name%]" value="1" /> <label for="topic_[%t.name%]">[% t.title %] </label> -<br/> -[% END %] -<br /> -[%- IF topic_required -%] -<input class="MainMenuLinks" type="submit" name="action_tag_topic_by_sender" value="[%|loc%]Tag this mail[%END%]" onclick="return checkbox_check_topic(select_topic_msg)" /> -[%- ELSE -%] -<input class="MainMenuLinks" type="submit" name="action_tag_topic_by_sender" value="[%|loc%]Tag this mail[%END%]" /> -[%- END -%] -<input type="hidden" name="message_id" value="[% message_id %]" /> -<input type="hidden" name="authkey" value="[% authkey %]" /> -<input type="hidden" name="list" VALUE="[% list %]" /> -</fieldset> -</form> -<br /> -<br /> - -[%|loc(from)%]From: %1[%END%]<br /> -[%|loc(mailto)%]To: %1[%END%]<br /> -[%|loc(date)%]Date: %1[%END%]<br /> - -[%|loc(subject)%]Subject: %1[%END%]<br /><br /> - -[%body%]<br /> - -<!-- end request_topic.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/requestpasswd.tt2 b/sympa-6.1.20-src/web_tt2/requestpasswd.tt2 deleted file mode 100644 index 1c8572af3ab18b9b12836b1b8b116b3719b8d163..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/requestpasswd.tt2 +++ /dev/null @@ -1,22 +0,0 @@ -<!-- $Id: requestpasswd.tt2 5106 2008-08-13 14:43:44Z olivier.salaun $ --> - -[% IF login_error == 'ticket_sent' %] - <h3>[%|loc%]Message sent[%END%]</h3> - <p> - [%|loc%]We've sent you an email that will allow you choose your password. Please check your mailbox.[%END%]<br/> - </p> -[% ELSIF login_error == 'unable_to_send_ticket' %] - <p> - [%|loc%]We were not able to send you a validation message.[%END%] - </p> -[% ELSIF login_error == 'unable_to_create_ticket' %] - <p> - [%|loc%]Internal error: could not build a validation link, please contact the service administrator[%END%] - </p> -[% ELSE %] - <p> - [%|loc%]Unkown error.[%END%] - </p> -[% END %] - -<!-- end requestpasswd.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/review_family.tt2 b/sympa-6.1.20-src/web_tt2/review_family.tt2 deleted file mode 100644 index 929868eb9be841761368952aadb3751c69fec431..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/review_family.tt2 +++ /dev/null @@ -1,21 +0,0 @@ -<!-- $Id: review_family.tt2 10074 2013-12-29 10:08:18Z sikeda $ --> - - -<table summary="[%|loc%]Table which display family lists[%END%]" class="listOfItems"> - <tr> - <th>[%|loc%]Status[%END%]</th> - <th>[%|loc%]Listname[%END%]</th> - <th>[%|loc%]Instantiation date[%END%]</th> - <th>[%|loc%]Subject[%END%]</th> - </tr> - -[% FOREACH list = family_lists %] -<tr> -<td>[%|optdesc('status')%][% list.status %][%END%]</td> -<td><a href="[% path_cgi %]/admin/[% list.name %]">[% list.name %]</a></td> -<td>[% list.instantiation_date %]</td> -<td>[% list.subject %]</td> -</tr> -[% END %] -</table> -<!-- end review_family.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/reviewbouncing.tt2 b/sympa-6.1.20-src/web_tt2/reviewbouncing.tt2 deleted file mode 100644 index 534dabe5d4dcd05d7f1b5df121fcfa8dcfa6d476..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/reviewbouncing.tt2 +++ /dev/null @@ -1,137 +0,0 @@ -<!-- $Id: reviewbouncing.tt2 10075 2013-12-30 02:00:24Z sikeda $ --> - -<div class="block"> -<h3>[%|loc%]Manage bouncing list members[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/admin#manage_bounces" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3> - -<br /> -<a class="actionMenuLinks" href="[% path_cgi %]/dump/[% list %]/bounce">[%|loc%]Dump[%END%]</a> - -<form action="[% path_cgi %]" method="post"> -<fieldset> - <input type="hidden" name="previous_action" value="reviewbouncing" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="action" value="search" /> - <input size="25" id="filter_reviewbouncing" name="filter" value="[% filter %]" /> <input class="MainMenuLinks" type="submit" name="action_search" value="[%|loc%]Search[%END%]" onclick="return isNotEmpty('filter_reviewbouncing')" /> -</fieldset> -</form> - -<form method="post" action="[% path_cgi %]"> -<fieldset> - <input class="MainMenuLinks" type="submit" value="[%|loc%]Remind all subscribers[%END%]" name="action_remind" onclick="return request_confirm('[% FILTER escape_quote %][%|loc(total)%]Do you really want to send a subscription reminder message to the %1 subscribers?[%END%][%END%]')" /> - <input type="hidden" name="action" value="remind" /> - <input type="hidden" name="list" value="[% list %]" /> -</fieldset> -</form> -<br /> - -<form action="[% path_cgi %]"> -<fieldset> - <input type="hidden" name="sortby" value="[% sortby %]" /> - <input type="hidden" name="action" value="reviewbouncing" /> - <input type="hidden" name="list" value="[% list %]" /> - <select name="size" onchange="this.form.submit();"> - <option value="[% size %]" selected="selected">[% size %]</option> - <option value="25">25</option> - <option value="50">50</option> - <option value="100">100</option> - <option value="500">500</option> - </select> -</fieldset> -</form> -<br /> - -<div class="text_right"> - [% IF prev_page %] - <a href="[% path_cgi %]/reviewbouncing/[% list %]/[% prev_page %]/[% size %]"><img src="[% icons_url %]/left.png" alt="[%|loc%]Previous page[%END%]"></a> - [% END %] - [% IF page %] - [%|loc(page,total_page)%]page %1 / %2[%END%] - [% END %] - [% IF next_page %] - <a href="[% path_cgi %]/reviewbouncing/[% list %]/[% next_page %]/[% size %]"><img src="[% icons_url %]/right.png" alt="[%|loc%]Next page[%END%]"></a> - [% END %] -</div> - -<form name="myform" action="[% path_cgi %]" method="post"> -<fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="previous_action" value="reviewbouncing" /> - <table summary="[%|loc%]Table which display list bounces[%END%]" class="listOfItems"> - <tr> - <th rowspan="2"><a href="#" onclick="toggle_selection(document.myform.email);return false;" title="[%|loc%]Toggle Selection[%END%]">«»</a></th> - <th rowspan="2">[%|loc%]Email[%END%]</th> - <th rowspan="2">[%|loc%]Bounce score[%END%]</th> - <th colspan="3">[%|loc%]Details[%END%]</th> - </tr> - <tr> - <th>[%|loc%]# of bounces[%END%]</th> - <th>[%|loc%]First bounce[%END%]</th> - <th>[%|loc%]Last bounce[%END%]</th> - </tr> - - - [% FOREACH u = members %] - - [% IF dark == '1' %] - <tr> - [% ELSE %] - <tr class="color0"> - [% END %] - - <td> - <input type="checkbox" name="email" value="[% u.escaped_email %]" /> - </td> - <td> - <a href="[% path_cgi %]/editsubscriber/[% list %]/[% u.escaped_email %]/reviewbouncing">[% u.email %]</a> - - </td> - <td class="text_center - [% IF u.bounce_level == '2' %] - bounce_level2 - [% ELSIF u.bounce_level == '1' %] - bounce_level1 - [% END %] - "> - [% IF ! u.bounce_score %] - [%|loc%]no score[%END%] - [% ELSE %] - [% u.bounce_score %] - [% END %] - </td> - <td>[% u.bounce_count %]</td> - <td>[% u.first_bounce %]</td> - <td>[% u.last_bounce %]</td> - </tr> - - [% IF dark == '1' %] - [% SET dark = 0 %] - [% ELSE %] - [% SET dark = 1 %] - [% END %] - - [% END %] - </table> - <div class="text_right"> - [% IF prev_page %] - <a href="[% path_cgi %]/reviewbouncing/[% list %]/[% prev_page %]/[% size %]"><img src="[% icons_url %]/left.png" alt="[%|loc%]Previous page[%END%]" /></a> - [% END %] - [% IF page %] - [%|loc(page,total_page)%]page %1 / %2[%END%] - [% END %] - [% IF next_page %] - <a href="[% path_cgi %]/reviewbouncing/[% list %]/[% next_page %]/[% size %]"><img src="[% icons_url %]/right.png" alt="[%|loc%]Next page[%END%]" /></a> - [% END %] - </div> - [% IF is_owner %] - <br /> - <input class="MainMenuLinks" type="submit" name="action_del" value="[%|loc%]Delete selected email addresses[%END%]" /> - <input id="quiet" type="checkbox" name="quiet" /> <label for="quiet">[%|loc%]quiet[%END%] </label><br /> - <input class="MainMenuLinks" type="submit" name="action_resetbounce" value="[%|loc%]Reset errors for selected users[%END%]" /><br /> - [% END %] - - <input class="MainMenuLinks" type="button" value="[%|loc%]Toggle Selection[%END%]" onclick="toggle_selection(document.myform.email)" /> -</fieldset> -</form> - -</div> -<!-- end reviewbouncing.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/rss.tt2 b/sympa-6.1.20-src/web_tt2/rss.tt2 deleted file mode 100644 index d47d707b4efff6e8bcce721e4ae1ff07ebb3c012..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/rss.tt2 +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <channel> - <title>[% FILTER escape_xml %][% title_clear_txt %][%END%][%|loc%]:[%END%] -[%- IF errors %] [%|loc%]Server error[%END%] [% END -%] -[%- IF action == 'latest_lists' -%][%|loc%] new lists [%END%] -[%- ELSIF action == 'active_lists' -%][%|loc%] active lists [%END%] -[%- ELSIF action == 'latest_arc' -%][%|loc%] most recent messages [%END%] -[%- ELSIF action == 'latest_d_read' -%][%|loc%] most recent documents [%END%] -[%- END -%]</title> - <link>[%- IF action == 'latest_arc' -%][% base_url %][% path_cgi %]/arc/[% list %]/ -[%- ELSIF action == 'latest_d_read' -%] [% base_url %][% path_cgi %]/d_read/[% list %]/ -[%- ELSE -%][% base_url %][% path_cgi %] -[%- END -%]</link> - <description>[% IF errors %] [%|loc%]Server error[%END%] [% END -%] -[%- IF action == 'latest_lists' -%] - [%- IF count -%] - [%|loc(count)%]The %1 new lists[%END%] - [%- ELSE -%] - [%|loc%]New lists[%END%] - [%- END -%] - [%- IF for -%] - [%|loc(for)%]for %1 days[%END -%] - [%- END -%] - [%- IF subtitle %] - [% subtitle %] [% END -%] -[%- ELSIF action == 'active_lists' -%] - [%- IF count -%] - [%|loc(count)%]The %1 most active lists[%END%] - [%- ELSE -%] - [%|loc%]The most active lists[%END%] - [%- END -%] - [%- IF for -%] - [%|loc(for)%]for %1 days[%END%] - [%- END -%] - [%- IF subtitle %] - [% subtitle %] [% END -%] -[%- ELSIF action == 'latest_arc' -%] - [%- IF count -%] - [%|loc(count)%]The %1 most recent messages[%END%] - [%- ELSE -%] - [%|loc%]Most recent messages[%END%] - [%- END -%] - [%- IF for -%] - [%|loc(for)%]for %1 days [%END%] - [%- END -%] -[%- ELSIF action == 'latest_d_read' -%] - [%- IF count -%] - [%|loc(count)%]The %1 most recent shared documents[%END%] - [%- ELSE -%] - [%|loc%]Most recent shared documents[%END%] - [%- END -%] - [%- IF for -%] - [%|loc(for)%]for %1 days [%END%] - [%- END -%] -[%- END -%]</description> - <language>[% lang %]</language> - <lastBuildDate>[% date %]</lastBuildDate> - <generator>Sympa[% version %]</generator> - <webMaster>listmaster@[% conf.host %]</webMaster> - <docs>http://web.resource.org/rss/1.0/spec</docs> - - -[% IF action == 'latest_lists' -%] - [% FOREACH l = latest_lists -%] - <item> - <title>[% l.name %]@[% l.host %] - [% FILTER escape_xml %][% l.subject %][%END%]</title> - <link>[% base_url %][% path_cgi %]/info/[% l.name %]</link> - </item> - [% END -%] -[% ELSIF action == 'active_lists' -%] - [% FOREACH l = active_lists -%] - <item> - <title>[%|loc(l.name,l.host,l.subject,l.msg_count)%]%1@%2 - %3: %4 messages[%END%] [% IF l.average -%] - [%|loc(l.average)%]%1 by day [%END%][%END%]</title> - <link>[% base_url %][% path_cgi %]/info/[% l.name %]</link> - </item> - [% END -%] -[% ELSIF action == 'latest_arc' -%] - [% FOREACH a = archives -%] - <item> - <title>[% FILTER escape_xml %][% a.subject %] - [% a.from %][%END%]</title> - <link>[% conf.wwsympa_url %]/arcsearch_id/[% list %]/[% a.year_month %]/[% a.message_id %]</link> - <pubDate>[% a.date_smtp %]</pubDate> - </item> - [% END -%] -[% ELSIF action == 'latest_d_read' -%] - [% FOREACH d = documents -%] - <item> - [% IF d.url -%] - <title>[%|loc(d.anchor)%]Bookmark %1[%END%]</title> - <link>[% d.url %]</link> - [% ELSE -%] - <title>[% d.name %]</title> - <link>[% FILTER escape_xml %][% base_url %][% path_cgi %]/d_read/[% list %][% d.escaped_content_dir %]/[% d.escaped_name %][%END%]</link> - [% END -%] - </item> - [% END -%] -[% END -%] - </channel> -</rss> diff --git a/sympa-6.1.20-src/web_tt2/rss_request.tt2 b/sympa-6.1.20-src/web_tt2/rss_request.tt2 deleted file mode 100644 index 98a00c2a1be06848f67986ad5d0c27ae47a2e240..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/rss_request.tt2 +++ /dev/null @@ -1,67 +0,0 @@ -<!-- $Id: rss_request.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> -<div class="block"> -[% USE String %] - -<h2>[%|loc%]RSS channel[%END%]</h2><br /> - -[%|loc%]This server provides various news via RSS. Choose parameters and pickup the RSS url[%END%] - -<form action="[% path_cgi %]" method="post"> -<fieldset> -<ul> -<li><label for="count">[%|loc%]Limit the number of responses:[%END%] </label><select id="count" name="count"> -[% n = [ 1 .. 20 ] %] -[% FOREACH i = n %] - <option value="[% i %]" [% IF i == '20' %]selected="selected"[% END %] >[% i %]</option> -[% END %] -</select> -</li> -<li><label for="for">[%|loc%]Limit the number of days used for the selection:[%END%] </label><select id="for" name="for"> -[% n = [ 1 .. 30 ] %] -[% FOREACH i = n %] - <option value="[% i %]" [% IF i== '10' %]selected="selected"[% END %]>[% i %]</option> -[% END %] -</select> -</li> -</ul> -[% IF list %] -<input type="hidden" name="list" value="[% list %]" /> -[% END %] -<br /> -<input class="MainMenuLinks" type="submit" name="action_rss_request" value="[%|loc%]Update RSS URL[%END%]" /> -</fieldset> -</form> - -<br /> -<br /> -[% IF output %] -<form action="[% path_cgi %]" method="post"> -<fieldset> -<ul> -[% IF latest_arc_url %] -[% s = String.new(latest_arc_url) %] -<li><label for="latest_arc">[%|loc%]latest arc:[%END%] - <input type="text" name="latest_arc" id="latest_arc" size="[% s.length %]" value="[% latest_arc_url %]" /></label></li> -[% END %] -[% IF latest_d_read_url %] -[% s = String.new(latest_d_read_url) %] -<li><label for="latest_arc">[%|loc%]latest document:[%END%] - <input type="text" name="latest_d_read" id="latest_d_read" size="[% s.length %]" value="[% latest_d_read_url %]" /></label></li> -[% END %] -[% IF active_lists_url %] -[% s = String.new(active_lists_url) %] -<li><label for="active_lists">[%|loc%]active lists:[%END%] - <input type="text" name="active_lists" id="active_lists" size="[% s.length %]" value="[% active_lists_url %]" /></label></li> -[% END %] -[% IF latest_lists_url %] -[% s = String.new(latest_lists_url) %] -<li><label for="latest_lists">[%|loc%]latest lists:[%END%] - <input type="text" name="latest_lists" id="latest_lists" size="[% s.length %]" value="[% latest_lists_url %]" /></label></li> -[% END %] -</ul> -</fieldset> -</form> -[% END %] - -</div> -<!-- end rss_request.tt2 (distrib) --> diff --git a/sympa-6.1.20-src/web_tt2/scenario_test.tt2 b/sympa-6.1.20-src/web_tt2/scenario_test.tt2 deleted file mode 100644 index df8f71a98799f1c644a2a52ebafbfde6a16a19c2..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/scenario_test.tt2 +++ /dev/null @@ -1,49 +0,0 @@ -<!-- $Id: scenario_test.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - -<h3>[%|loc%]Scenario test module[%END%]</h3><br /> -<form action="[% path_cgi %]" method="post"> -<fieldset> - <input type="hidden" name="action" value="scenario_test" /> - <label for="scenario">[%|loc%]Scenario name:[%END%] </label> - <select id="scenario" name="scenario"> - [% FOREACH sc = scenario %] - <option value="[% sc.key %]" [% sc.value.selected %]>[% sc.key %]</option> - [% END %] - </select><br /> - <label for="listname">[%|loc%]Listname:[%END%] </label> - <select id="listname" name="listname"> - [% FOREACH l = listname %] - <option value="[% l.key %]"[% l.value.selected %] >[% l.key %]</option> - [% END %] - </select><br /> - <label for="sender">[%|loc%]sender email:[%END%] </label> - <input id="sender" type="text" name="sender" size="20" value="[% sender %]" /> - <br /> - <label for="email">[%|loc%]Related email:[%END%] </label> - <input id="email" type="text" name="email" size="20" value="[% email %]" /> - <br /> - <label for="remote_addr">[%|loc%]Remote IP address:[%END%] </label> - <input type="text" name="remote_addr" size="16" value="[% remote_addr %]" /> - <br /> - <label for="remote_host">[%|loc%]Remote host:[%END%] </label> - <input type="text" name="remote_host" size="16" value="[% remote_host %]" /> - <br /> - <label for="auth_method">[%|loc%]Auth method:[%END%] </label> - <select id="auth_method" name="auth_method"> - [% FOREACH a = auth_method %] - <option value="[% a.key %]"[% a.value.selected %] >[% a.key %]</option> - [% END %] - </select> - <br /> - <input id="rule" class="MainMenuLinks" type="submit" name="action_scenario_test" value="[%|loc%]get matched rule[%END%]" /> - <span class="bg_color_dark"> - [% IF scenario_action %] - <code>[% scenario_condition %], [% scenario_auth_method %] -> [% scenario_action %]</code> - [% ELSE %] - <label for="rule" class="text_center"> - </label> - [% END %] - </span> - - </fieldset> - </form> -<!-- end scenario_test.tt2 (distrib) --> diff --git a/sympa-6.1.20-src/web_tt2/search_user.tt2 b/sympa-6.1.20-src/web_tt2/search_user.tt2 deleted file mode 100644 index a34538312a073222541f979fb881b5d7f693ff6b..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/search_user.tt2 +++ /dev/null @@ -1,82 +0,0 @@ -<!-- $Id: search_user.tt2 10074 2013-12-29 10:08:18Z sikeda $ --> -<div class="block"> -<h2> [%|loc%]User search result:[%END%]</h2> -<br/> - [%|loc(email)%]<strong>%1</strong> is subscribed to the following mailing lists:[%END%] - -[% IF which %] -<table summary="[%|loc(email)%]Lists which %1 is subscribed [%END%]" class="listOfItems"> - <tr> - <th>[%|loc%]list[%END%] - </th> - <th>[%|loc%]role[%END%]</span> - </th> - <th>[%|loc%]reception[%END%]</span> - </th> - <th>[%|loc%]topics[%END%]</span> - </th> - <th>[%|loc%]bounce[%END%]</span> - </th> - <th colspan="2"> - </th> - </tr> - [% FOREACH l = which %] - - [% IF dark == '1' %] - [% SET dark = 0 %] - <tr class="color_light"> - [% ELSE %] - [% SET dark = 1 %] - <tr class="color0"> - [% END %] - <td> - <a href="[% path_cgi %]/info/[% l.key %]" ><strong>[% hidden_head %][% l.key %][% hidden_at %][% l.value.host %][% hidden_end %]</strong></a> - </td> - <td> - [% IF l.value.is_member %][%|loc%]member[%END%] [% END %] - [% IF l.value.is_owner %][%|loc%]owner[%END%] [% END %] - [% IF l.value.is_editor %][%|loc%]editor[%END%] [% END %] - </td> - <td> - [%|optdesc('reception')%][% l.value.reception %][% END %] - </td> - <td> - [% l.value.topic %] - </td> - <td> - [% l.value.bounce %] - </td> - [% IF l.value.subscribed %] - <td> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="previous_action" value="search_user" /> - <input type="hidden" name="email" value="[% email %]" /> - <input type="hidden" name="list" value="[% l.key %]" /> - <input class="MainMenuLinks" type="submit" name="action_del" value="[%|loc%]delete[%END%]" /> - <input id="quiet" type="checkbox" name="quiet" /> <label for="quiet">[%|loc%]quiet[%END%]</label> - </fieldset> - </form> - </td> - <td> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="previous_action" value="search_user" /> - <input type="hidden" name="email" value="[% email %]" /> - <input type="hidden" name="list" value="[% l.key %]" /> - <input class="MainMenuLinks" type="submit" name="action_editsubscriber" value="[%|loc%]edit[%END%]" /> - </fieldset> - </form> - </td> - [% ELSE %] - <td colspan="2"></td> - [% END %] - </tr> - [% END %] -</table> -[% ELSE %] -<p>[%|loc%]No mailing list available.[%END%]</p> -[% END %] - -</div> -<!-- end search_user.tt2 (distrib) --> diff --git a/sympa-6.1.20-src/web_tt2/serveradmin.tt2 b/sympa-6.1.20-src/web_tt2/serveradmin.tt2 deleted file mode 100644 index 9656590a49f63da7e96150638477fc668d96947e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/serveradmin.tt2 +++ /dev/null @@ -1,253 +0,0 @@ -<!-- $Id: serveradmin.tt2 10036 2013-12-23 02:32:20Z sikeda $ --> - -<div class="block"> -[% IF subaction == '' or subaction == 'm_lists' %] -<h2>[%|loc%]Lists[%END%]</h2> -<div> - <h3>[%|loc%]Manage lists[%END%]</h3><br/> - <div> - <a class="actionMenuLinks" href="[% path_cgi %]/get_pending_lists">[%|loc%]Pending lists[%END%]</a> - <a class="actionMenuLinks" href="[% path_cgi %]/get_closed_lists">[%|loc%]Closed lists[%END%]</a> - </div> - <h3>[%|loc%]Consult lists[%END%]</h3><br/> - <div> - <a class="actionMenuLinks" href="[% path_cgi %]/get_latest_lists">[%|loc%]Lists sorted by creation date[%END%]</a> - <a class="actionMenuLinks" href="[% path_cgi %]/get_inactive_lists">[%|loc%]Lists sorted by last message date[%END%]</a> - </div> -</div> -[% END %] - -[% IF main_robot %] - [% IF subaction == 'vhosts' %] -<h2>[%|loc%]Virtual Robots[%END%]</h2> <br /> -<div> - [% IF robots %] - [%|loc%]The following virtual robots are running on this server:[%END%] - <ul> - [% FOREACH vr = robots %]<li><a href="[% vr.value.wwsympa_url %]/serveradmin">[% vr.key %]</a> - <i>[%|loc%]Sympa URL:[%END%]</i> <b>[% vr.value.wwsympa_url %]</b> - <i>[%|loc%]Mail domain:[%END%]</i> <b>[% vr.value.host %]</b> - <i>[%|loc%]Listmaster(s):[%END%]</i> <b>[% FOREACH admin = vr.value.listmaster %][% admin %] [% END %]</b></li>[% END %] - </ul> - [% ELSE %] - [%|loc%]No Virtual Robot defined on this server[%END%] - [% END %] -</div> - [% END %] -[% END %] - -[% IF families -%] - [% IF subaction == 'families' %] -<h2>[%|loc%]Families[%END%]</h2><br /> -<div> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <select name="family_name"> - [% FOREACH f = families %] - <option value='[% f %]'>[% f %]</option>[% END %] - </select> - <input class="MainMenuLinks" type="submit" name="action_review_family" value="[%|loc%]Review lists from this family[%END%]" /> - </fieldset> - </form> - -</div> - [% END %] -[% END %] -[% IF subaction == 'users' %] -<h2>[%|loc%]Users[%END%]</h2><br /> -<div> - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="text" name="email" size="30" value="[% email %]" /> - <input type="hidden" name="action" value="search_user" /> - <input class="MainMenuLinks" type="submit" name="action_search_user" value="[%|loc%]Search User[%END%]" /> - </fieldset> - </form> -</div> - -<div> -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> - -<label for="session_delay">[%|loc%]Delay for active sessions (minutes)[%END%] </label> -<input type="text" id="session_delay" name="session_delay" size="2" value="10" /><br /> -<input type="checkbox" id="connected_only" name="connected_only" /> -<label for="connected_only">[%|loc%]Show only connected users[%END%] </label> -<input class="MainMenuLinks" type="submit" name="action_show_sessions" value="[%|loc%]Show sessions[%END%]" /> -<br /> -</fieldset> -</form> -</div> - -<h3>[%|loc%]You can change your users email address here:[%END%]</h3><br /> - -[%|loc%]Changing a user's email address will apply the change his memberships but it will also apply to his ownerships if he is owner of some lists.[%END%]<br /> - -<div> -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> -<label for="old_email">[%|loc%]Current user email address: [%END%]</label><input id="old_email" type="text" name="old_email" size="30" /><br /> - -<label for="new_email">[%|loc%]New user email address: [%END%]</label><input id="new_email" type="text" name="new_email" size="30" /> -<input type="hidden" name="action" value="change_email"> -<input class="MainMenuLinks" type="submit" name="action_change_email" value="[%|loc%]Update user memberships[%END%]" /> -</fieldset> -</form> -</div> - -<h3>[%|loc%]Change identity[%END%]</h3><br /> -<div> -[%|loc%]As listmaster, you can change your identity and act as someone else. This is may be usefull when providing assistance or to test users privileges. The new identity is attached to the current session[%END%]<br/> - -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> -<input class="MainMenuLinks" type="submit" name="action_set_session_email" value="[%|loc%]change identity as: [%END%]" /> -<input id="session_email" type="text" name="email" size="50"/> -</fieldset> -</form> -</div> -[% END %] - -[% IF subaction == 'archives' %] -<h2>[%|loc%]Archives[%END%]</h2><br /> -<div> -[%|loc%]Rebuild HTML archives using "arctxt" directories as input.[%END%]<br /> -<form action="[% path_cgi %]" method="post"> -<fieldset> -<label for="list">[%|loc%]listname: [%END%]</label><input id="list" type="text" name="list" size="20" /> <input class="MainMenuLinks" type="submit" name="action_rebuildarc" value="[%|loc%]Rebuild archive[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_rebuildallarc" value="[%|loc%]Rebuild all[%END%]" />([%|loc%] May take a lot of CPU time, be careful![%END%])<br /> -</fieldset> -</form> - -</div> -[% END %] - -[% IF subaction == 'logs' %] -<h2>[%|loc%]System log[%END%]</h2><br /> -<div> -[%|loc%]You can increase the log level specified by configuration only for your current session. On a production server, this allow to keep logs rather small and to test some features with the maximum log level. [%END%]<br/> - -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> -[%|loc%]Log level:[%END%] -<input id="log_level_0" type="radio" name="log_level" value="0" [%IF log_level == 0 %]checked="checked"[%END%]/> <label for="log_level_0">0</label> | -<input id="log_level_1" type="radio" name="log_level" value="1" [%IF log_level == 1 %]checked="checked"[%END%]/> <label for="log_level_1">1</label> | -<input id="log_level_2" type="radio" name="log_level" value="2" [%IF log_level == 2 %]checked="checked"[%END%]/> <label for="log_level_2">2</label> | -<input id="log_level_3" type="radio" name="log_level" value="3" [%IF log_level == 3 %]checked="checked"[%END%]/> <label for="log_level_3">3</label> | -<input id="log_level_4" type="radio" name="log_level" value="4" [%IF log_level == 4 %]checked="checked"[%END%]/> <label for="log_level_4">4</label> -<input class="MainMenuLinks" type="submit" name="action_set_loglevel" value="[%|loc%]Set log level[%END%]" /></fieldset> -</form> -</div> -[% END %] - -[% IF subaction == 'templates' %] -<h2>[%|loc%]Templates[%END%]</h2><br /> -<div> -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> - <label for="file">[%|loc%]Setting defaults list templates[%END%]</label><br /> - <select id="file" name="file"> - [% FOREACH f = lists_default_files %]<option value='[% f.key %]' [% f.value.selected %]>[% f.value.complete %]</option>[% END %] - </select> - <input class="MainMenuLinks" type="submit" name="action_editfile" value="[%|loc%]Edit[%END%]" /> -<br /> - -</fieldset> -</form> -<br /> - -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> - <label for="file">[%|loc%]Setting site templates[%END%]</label><br /> - <select id="file" name="file"> - [% FOREACH f = server_files %]<option value='[% f.key %]' [% f.value.selected %]>[% f.value.complete %]</option>[% END %] - </select> - <input class="MainMenuLinks" type="submit" name="action_editfile" value="[%|loc%]Edit[%END%]" /> -</fieldset> -</form> - -<a class="actionMenuLinks" href="http://pootle.sympa.org/">[%|loc%]view translations[%END%]</a> -<a class="actionMenuLinks" href="[% path_cgi %]/ls_templates">[%|loc%]Customize templates[%END%]</a> -</div> -<div> -<form class="bold_label" action="[% path_cgi %]" method="post"> -<fieldset> -[%|loc%]When customizing Sympa web templates, it is needed to known which variables can be processed by the tt2 parser.This button is for controlling tt2 vars dump feature:[%END%]<br/> - -[% IF dumpvars == 'true' %] - <input class="MainMenuLinks" type="submit" name="action_unset_dumpvars" value="[%|loc%]Unset template vars dump[%END%]" /> -[% ELSE %] - <input class="MainMenuLinks" type="submit" name="action_set_dumpvars" value="[%|loc%]Set template vars dump[%END%]" /> -[% END %] - -</fieldset> -</form> -</div> -[% END %] - -[% IF subaction == 'skins' %] -<h2>[%|loc%]Skins, CSS and colors[%END%]</h2><br /> -<div> -<a class="actionMenuLinks" href="[% path_cgi %]/skinsedit">[%|loc%]Skins administration page[%END%]</a> -</div> -[% END %] -[% IF subaction == 'edit_config' %] -<h2>[%|loc%]View main config[%END%]</h2><br /> -<div> - -[% SET close_table = '' %] -[% FOREACH confparam IN editable_params %] - [% IF confparam.title %] - [% close_table %] - <h4> [% confparam.title %] </h4> <table class="listOfItems"><tr><th>parameter name</th><th>value</th><th>default</th><th>semantic</th></tr> - [% ELSE %] - [% IF dark == '1' %] - <tr> [% SET dark='0'%] - [% ELSE %] - <tr class="color0">[% SET dark='1'%] - [% END %] - <td>[% confparam.name %]</td> - <td> - [% IF confparam.edit == '1' %] -<form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="text" name="new_value" value="[% confparam.current_value %]" style="width:75%"/> - <input type="hidden" name="conf_parameter_name" value="[% confparam.name %]" /> - <input class="MainMenuLinks" type="submit" name="action_set_param" value="[%|loc%]Set[%END%]" style="width:20%" /> -</fieldset> -</form> -[% ELSE %] -[% confparam.current_value %] -[% END %] -</td> -<td>[% confparam.default %]</td><td>[% confparam.query %]</td></tr> - [% SET close_table = '</table>' %] - [% END %] -[% END %] -[% close_table %] - -</div> -[% END %] -[% IF subaction == 'translation' %] -<h2>[%|loc%]Translating Sympa[%END%]</h2><br /> -<div> -[%|loc%]Sympa is designed to allow easy internationalization of its user interface (service mail messages and web interface). All translations for one language are gathered in a single PO file that can be manipulated by standard GNU gettext tools.[%END%] -</div> -<div> -[%|loc%]Check our translation FAQ if you wish to translate Sympa GUI in your native language: [%END%] <a href="http://www.sympa.org/translating_sympa">http://www.sympa.org/translating_sympa</a> -</div> -[% END %] - -[% IF subaction == 'tracker' %] -<h2>[%|loc%]Submitting a bug, a feature request[%END%]</h2><br /> -<div> -[%|loc%]You can submit a problem or request a new feature: [%END%]<a href="http://www.sympa.org/tracking">http://www.sympa.org/tracking</a> -</div> -[% END %] - -<br /><br /><br /> - -[% IF loop_count %] -<span class="bottom_page"> -[%|loc(process_id,loop_count,start_time)%]This FastCGI process (%1) has served %2 pages since %3.[%END%] -</span> -[% END %] -</div> -<!-- end serveradmin.tt2 (distrib) --> diff --git a/sympa-6.1.20-src/web_tt2/set_pending_list_request.tt2 b/sympa-6.1.20-src/web_tt2/set_pending_list_request.tt2 deleted file mode 100644 index e03b0a2790ddb858f6189d5cb51726a64fd7bf8d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/set_pending_list_request.tt2 +++ /dev/null @@ -1,63 +0,0 @@ -<!-- $Id: set_pending_list_request.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - -<br /> - - <div class="block"> - <strong> - [%|loc%]Listname:[%END%] [% list %]<br /> - [%|loc%]Subject:[%END%] [% list_subject %]<br /> - </strong> - [%|loc%]List requested by[%END%] [% list_request_by %] [%|loc(list_request_date)%] on %1[%END%]<br /> - </div> - -<br /><br /> -[% IF is_listmaster %] -[% IF list_status == 'pending' %] -<div> -<form action="[% path_cgi %]" method="post"> -<fieldset> -<input type="hidden" name="list" value="[% list %]" /> -<input type="hidden" name="serial" value="[% list_serial %]" /> - -<ul id="set_pending_radio"> -<li><input id="status" type="radio" name="status" value="closed" /><label for="status">[%|loc%]Close it[%END%]</label></li> -<li><input id="status2" type="radio" name="status" value="open" /><label for="status2">[%|loc%]Install it[%END%]</label></li> -</ul> -<input class="MainMenuLinks" type="submit" name="action_install_pending_list" value="[%|loc%]submit[%END%]" /> -<input id="notify" type="checkbox" name="notify" checked="checked" /><label for="notify">[%|loc%]notify owner[%END%]</label> -</fieldset> -</form> -</div> -<br /><hr /><br /> -[% END %] -[% END %] - -<div class="block"> -<strong>[%|loc%]Information file:[%END%] </strong><br /> - - [% IF is_listmaster %] - ([% list_info %]) - [% END %] -<pre class="code"> - [% IF list_info_file_exists %] - [% INSERT 'info' %] - [% ELSE %] - No info file provided. - [% END %] -</pre> -<hr /><br /> -</div> -<br /><br /> -<div class="block"> -<strong>[%|loc%]Configuration file[%END%]</strong> - [% IF is_listmaster %] - ([% list_config %]) - [% END %] - -<hr /><br /> - -<pre class="code"> - [% INSERT 'config' %] -</pre> -</div> -<!-- end set_pending_list_request.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/show_cert.tt2 b/sympa-6.1.20-src/web_tt2/show_cert.tt2 deleted file mode 100644 index 8a0c93f583f0a07c856101e749b0e418441d9eec..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/show_cert.tt2 +++ /dev/null @@ -1,13 +0,0 @@ -<!-- $Id: show_cert.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - -<br /> -<div id="show_cert"> -<ul> - <strong>[%|loc%]HTTPS authentication information[%END%]</strong><br /> - <li>[%|loc%]User certificate belong to[%END%][% ssl_client_s_dn %]</li><br /> - <li>[%|loc%]Certificate expiration date[%END%][% ssl_client_v_end %]</li><br /> - <li>[%|loc%]Certificate issuer[%END%][% ssl_client_i_dn %]</li><br /> - <li>[%|loc%]Cipher key size used[%END%][% ssl_cipher_usekeysize %]</li><br /> -</ul> -</div> -<!-- end show_cert.tt2 --> \ No newline at end of file diff --git a/sympa-6.1.20-src/web_tt2/show_sessions.tt2 b/sympa-6.1.20-src/web_tt2/show_sessions.tt2 deleted file mode 100644 index d0acc2cb8ffe4eda88689822557b4e373a2c5b4f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/show_sessions.tt2 +++ /dev/null @@ -1,10 +0,0 @@ -<!-- $Id: show_sessions.tt2 3907 2006-09-25 14:50:16Z serge.aumont $ --> -<table summary="[%|loc%]Sessions list[%END%]" class="listOfItems text_center"> - <tr> <th>[%|loc%]last hit date[%END%]</th><th>[%|loc%]start date[%END%]</th><th>[%|loc%]hit count[%END%]</th><th>[%|loc%]remote address[%END%]</th><th>[%|loc%]robot[%END%]</th><th>[%|loc%]User email[%END%]</th></tr> - [% FOREACH session = sessions %] - [% IF dark == '1' %]<tr>[% SET dark = '0' %][% ELSE %]<tr class="color0">[% SET dark = '1' %][% END %] - <td>[% session.formated_date %]</td><td>[% session.formated_start_date %]</td><td>[% session.hit_session %]</td><td>[% session.remote_addr_session %]</td><td>[% session.robot_session %]</td><td>[% session.email_session %]</td> - </tr> - [% END %] -</table> -<!-- end show_sessions.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/sigrequest.tt2 b/sympa-6.1.20-src/web_tt2/sigrequest.tt2 deleted file mode 100644 index 4e21d63b8eaeba0ff07fdbb7bafe5c8916fb2315..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/sigrequest.tt2 +++ /dev/null @@ -1,45 +0,0 @@ -<!-- $Id: sigrequest.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - - [% IF status == 'user.email' %] - [%|loc(list)%]You asked to be unsubscribed from list %1[%END%]. <br />[%|loc%]To confirm - your request, please click the button below:[%END%]<br /> - <br /> - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="email" value="[% user.email %]" /> - <input class="MainMenuLinks" type="submit" name="action_signoff" value="[%|loc(list)%]I unsubscribe from list %1[%END%]" /> - </fieldset> - </form> - - [% ELSIF not_subscriber %] - - [%|loc(list,email)%]You are not subscribed to list %1 with e-mail address %2[%END%]. - <br /><br /> - [%|loc%]You might have subscribed with another address. - Please contact the list owner to help you unsubscribe:[%END%] - <a href="mailto:[% list %]-request@[% conf.host %]">[% list %]-request@[% conf.host %]</a> - - [% ELSIF ! email %] - [%|loc(list)%]We need to check your identity before validating your unsubscription request for list %1. If you have a user account you should login or create an account. <br/>Otherwise we can send you an email with a validation link inside; please provide your email address below to receive this validation link.[%END%] - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <strong><label for="email">[%|loc%]Your e-mail address:[%END%]</label></strong> - <input id="email" type="text" name="email"><br /> - <input type="hidden" name="action" value="sigrequest" /> - <input type="hidden" name="list" value="[% list %]" /> - <input class="MainMenuLinks" type="submit" name="action_sigrequest" value="[%|loc%]Send me a validation link[%END%]" /> - </fieldset> - </form> - - - [% ELSE %] - - [%|loc%]We've sent you an email including a validation link. You should check your mailbox to read this email and use this validation link.[%END%] <br /><br /> - - - [% END %] -<!-- end sigrequest.tt2 --> - diff --git a/sympa-6.1.20-src/web_tt2/skinsedit.tt2 b/sympa-6.1.20-src/web_tt2/skinsedit.tt2 deleted file mode 100644 index e20606486e7d44f3cb5e1cc790e5fb49b0bb8e53..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/skinsedit.tt2 +++ /dev/null @@ -1,261 +0,0 @@ -<!-- $Id: skinsedit.tt2 5649 2009-04-07 14:33:38Z serge.aumont --> - -<div class="block"> -<h2>[%|loc%]Cascading Style Sheet[%END%]</h2> -<p> - -[%|loc%]When not using css_url parameters, sympa deliver a dynamic CSS which is created using a template name css.tt2. Usually this template is comming from Sympa distribution tar. Using this CSS is not a good solution because for each clic, Sympa fcgi server is requested twice. If you use css_url parameters the style sheet are delivered by your http server. When you install a new Sympa version and start it at the first time, the different CSS files are installed in the directory specified by css_path parameter. So if you want to preserve some site customization from being overwriten when starting a new sympa version, css_path and css_url should not point to the same directory .[%END%] - - -[% IF css_result %] -<strong>[%|loc%]static css installation succeed. Reload the current page and/or check sympa logs to be sure that static css a really in use.[%END%]</strong><br /><br /> -[% END %] -[% IF css_path %] -<ul> -<li>[%|loc%]The css_path parameter is defined, value is[%END%] <strong>[% css_path %]</strong> </li> -<li>[%|loc%]the current definition for css location (css_url parameter) is[%END%] <a target="test" href="[% css_url %]">[% css_url %] </a><strong>[% css_warning %]</strong>.</li> - -</ul><br /> - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="action" value="skinsedit" /> - <input type="hidden" name="installcss" value="1" /> - <input class="MainMenuLinks" type="submit" name="action_skinsedit" value="[%|loc%]install static css[%END%]" /> - </fieldset> - </form> - -[% ELSE %] - -[%|loc(cssurl)%]Currently you have not defined the css_path parameter. <strong>You should edit the robot.conf configuration file </strong> (or if not using virtual robot, the sympa.conf file). Setting this parameter allows you to use this page to install static CSS and <strong>make sympa faster</strong>. Don't forget to set parameter css_url, it must be the URL for the directory where css are stored (current value is <a target="test" href="%1">%1</a>).[%END%] - -[% END %] -</p> -<h2>[%|loc%]Colors[%END%]</h2> -<p> - -[%|loc%]If you are not using css_path and css_url parameters, colors are defined in the robot.conf configuration file. Otherwise, colors are defined in the static CSS. Colors can be changed on your current session using the following color editor. When finished, you may copy the result a new CCS static file. The target is specified by css_path parameter.[%END%] -[% IF css_path %]([% css_path %])[% END %] -[%|loc%] -Be careful: the CSS file is overwritten using css.tt2 template, usually this file is comming from Sympa distribution so your CSS customization may be erased when doing this.[% END %] -</p> -<p> -[%|loc%]Use the color editor in order to change defined colors. First select the color you want to change and pick a color,then apply it using the test button. The new color is not really installed but it is used only for your own session. When happy with the different colors you choosen, you may save them in a new static CSS. -[%END%] -</p> - -<form action="[% path_cgi %]" method="post"> -<fieldset> -<ol><li>[%|loc%] pick the color you want to test. [%END%] -<input type="text" name="custom_color_value" id="custom_color_value" class="color" value="[% custom_color_value %]"> -<input type="hidden" name="editcolors" value="1"> -<input type="hidden" name="action" value="skinsedit"> -</li> - -<li>[%|loc%]Select the parameter you want to change: [%END%] -<select id="custom_color_number" name="custom_color_number"> -<option value=""></option> -[% FOREACH col IN ['color_0' 'color_1' 'color_2' 'color_3''color_4' 'color_5' 'color_6' 'color_7' 'color_8''color_9' 'color_10' 'color_11' 'color_12' 'color_13' 'color_14' 'color_15'] %] -<option value="[%col%]" [% IF col == custom_color_number %]selected="selected"[% END %]>[%col%]</option> -[% END %] -</select> - -</li> -<li> -<input class="MainMenuLinks" type="submit" name="subaction_test" value="[%|loc%]test this color in my session[%END%]" onClick="return (isNotEmpty('custom_color_number') && isNotEmpty('custom_color_value'));" /> -<input class="MainMenuLinks" type="submit" name="subaction_reset" value="[%|loc%]reset colors in my session[%END%]" /> -<input class="MainMenuLinks" type="submit" name="subaction_install" value="[%|loc%]Install my session colors in a new static CSS[%END%]" /> -</li> -</ol> - -</fieldset> -</form> - -<h3>[%|loc%]Color chart[%END%]</h3> - -<p>[%|loc%]Please note that these indications don't cover the exact usage of each color parameter, as it would be far too long to describe. What lies in this table should however give you a correct snapshot of what the color parameters are used for. For more details on rendering, feel free to try changing the colors in your session to see how well all that works.[%END%]</p> - -<table summary="[%|loc%]This table display every colors used in Sympa, with their hexadecimal code [%END%]" id="color_table"> -<tr id="color_table_title"> -<th>[%|loc%]parameter[%END%]</th> -<th>[%|loc%]parameter value[%END%]</th> -<th>[%|loc%]color lookup[%END%]</th> -[% IF custom_css -%] -<th>[%|loc%]default[%END%]</th> -<th>[%|loc%]color lookup[%END%]</th> -[%END%] -<th>[%|loc%]parameter usage[%END%]</th> -</tr> -<tr> - <td>color_0</td> - <td>[% color_0 %]</td> - <td style="background-color:[% color_0 %];cursor:pointer;" onclick="chooseColorNumber('color_0','[% color_0 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_0 %]</td> - <td style="background-color:[% conf.color_0 %];cursor:pointer;" onclick="chooseColorNumber('color_0','[% conf.color_0 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]one out of two lines in tables, alternated with color_14.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_1</td> - <td>[% color_1 %]</td> - <td style="background-color:[% color_1 %];cursor:pointer;" onclick="chooseColorNumber('color_1','[% color_1 %]');" align="center" > </td> - [% IF custom_css %]<td>[% conf.color_1 %]</td> - <td style="background-color:[% conf.color_1 %];cursor:pointer;" onclick="chooseColorNumber('color_1','[% conf.color_1 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]main navigation tabs;[%END%]</LI><LI>[%|loc%]most of the buttons;[%END%]</LI><LI>[%|loc%]border colors in the online help.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_2</td> - <td>[% color_2 %]</td> - <td style="background-color:[% color_2 %];cursor:pointer;" onclick="chooseColorNumber('color_2','[% color_2 %]');" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_2 %]</td> - <td style="background-color:[% conf.color_2 %];cursor:pointer;" onclick="chooseColorNumber('color_2','[% conf.color_2 %]')" align="center"> </td>[%END%] - <td>[%|loc%]font and border color of:[%END%]<UL><LI>[%|loc%]almost everything. Exceptions for borders are <TD/> borders; exceptions for fonts are links, buttons and some titles.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_3</td> - <td>[% color_3 %]</td> - <td style="background-color:[% color_3 %];cursor:pointer;" onclick="chooseColorNumber('color_3','[% color_3 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_3 %]</td> - <td style="background-color:[% conf.color_3 %];cursor:pointer;" onclick="chooseColorNumber('color_3','[% conf.color_3 %]')" align="center"> </td>[%END%] - <td>[%|loc%]Background color for the news area of the home page.[%END%]</td> -</tr> -<tr> - <td>color_4</td> - <td>[% color_4 %]</td> - <td style="background-color:[% color_4 %];cursor:pointer;" onclick="chooseColorNumber('color_4','[% color_4 %]')" align="center" > </td> - [% IF custom_css %]<td>[% conf.color_4 %]</td> - <td style="background-color:[% conf.color_4 %];cursor:pointer;" onclick="chooseColorNumber('color_4','[% conf.color_4 %]')" align="center"> </td>[%END%] - <td>[%|loc%]font color of:[%END%]<UL><LI>[%|loc%]titles;[%END%]</LI><LI>[%|loc%]hovered links.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_5</td> - <td>[% color_5 %]</td> - <td style="background-color:[% color_5 %];cursor:pointer;" onclick="chooseColorNumber('color_5','[% color_5 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_5 %]</td> - <td style="background-color:[% conf.color_5 %];cursor:pointer;" onclick="chooseColorNumber('color_5','[% conf.color_5 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]all the main interface boxes.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_6</td> - <td>[% color_6 %]</td> - <td style="background-color:[% color_6 %];cursor:pointer;" onclick="chooseColorNumber('color_6','[% color_6 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_6 %]</td> - <td style="background-color:[% conf.color_6 %];cursor:pointer;" onclick="chooseColorNumber('color_6','[% conf.color_6 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]buttons;[%END%]</LI><LI>[%|loc%]navigation tabs;[%END%]</LI><LI>[%|loc%]active option, if you have several buttons representing an alternative.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_7</td> - <td>[% color_7 %]</td> - <td style="background-color:[% color_7 %];cursor:pointer;" onclick="chooseColorNumber('color_7','[% color_7 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_7 %]</td> - <td style="background-color:[% conf.color_7 %];cursor:pointer;" onclick="chooseColorNumber('color_7','[% conf.color_7 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]error messages.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_8</td> - <td>[% color_8 %]</td> - <td style="background-color:[% color_8 %];cursor:pointer;" onclick="chooseColorNumber('color_8','[% color_8 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_8 %]</td> - <td style="background-color:[% conf.color_8 %];cursor:pointer;" onclick="chooseColorNumber('color_8','[% conf.color_8 %]')" align="center"> </td>[%END%] - <td>[%|loc%]font and border color of:[%END%]<UL><LI>[%|loc%]hovered links;[%END%]</LI><LI>[%|loc%]navigation tabs;[%END%]</LI><LI>[%|loc%]buttons;[%END%]</LI></UL>[%|loc%]background color of hovered buttons.[%END%]</td> -</tr> -<tr> - <td>color_9</td> - <td>[% color_9 %]</td> - <td style="background-color:[% color_9 %];cursor:pointer;" onclick="chooseColorNumber('color_9','[% color_9 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_9 %]</td> - <td style="background-color:[% conf.color_9 %];cursor:pointer;" onclick="chooseColorNumber('color_9','[% conf.color_9 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]main page;[%END%]</LI><LI>[%|loc%]table headers;[%END%]</LI><LI>[%|loc%]buttons.[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_10</td> - <td>[% color_10 %]</td> - <td style="background-color:[% color_10 %];cursor:pointer;" onclick="chooseColorNumber('color_10','[% color_10 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_10 %]</td> - <td style="background-color:[% conf.color_10 %];cursor:pointer;" onclick="chooseColorNumber('color_10','[% conf.color_10 %]')" align="center"> </td>[%END%] - <td>[%|loc%]border color for forms.[%END%]</td> -</tr> -<tr> - <td>color_11</td> - <td>[% color_11 %]</td> - <td style="background-color:[% color_11 %];cursor:pointer;" onclick="chooseColorNumber('color_11','[% color_11 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_11 %]</td> - <td style="background-color:[% conf.color_11 %];cursor:pointer;" onclick="chooseColorNumber('color_11','[% conf.color_11 %]')" align="center"> </td>[%END%] - <td>[%|loc%]border color that can be used to isolate some forms.[%END%]</td> -</tr> -<tr> - <td>color_12</td> - <td>[% color_12 %]</td> - <td style="background-color:[% color_12 %];cursor:pointer;" onclick="chooseColorNumber('color_12','[% conf.color_12 %]');" align="center" > </td> - [% IF custom_css %]<td>[% conf.color_12 %]</td> - <td style="background-color:[% conf.color_12 %];cursor:pointer;" onclick="chooseColorNumber('color_12','[% color_12 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]top box;[%END%]</LI><LI>[%|loc%]footer box;[%END%]</LI><LI>[%|loc%]online help buttons;[%END%]</LI></UL>[%|loc%]border color of:[%END%]<UL><LI>[%|loc%]tables;[%END%]</LI><LI>[%|loc%]side menu areas.[%END%]</LI></td> -</tr> -<tr> - <td>color_13</td> - <td>[% color_13 %]</td> - <td style="background-color:[% color_13 %];cursor:pointer;" onclick="chooseColorNumber('color_13','[% color_13 %]')" align="center" > </td> - [% IF custom_css %]<td>[% conf.color_13 %]</td> - <td style="background-color:[% conf.color_13 %];cursor:pointer;" onclick="chooseColorNumber('color_13','[% conf.color_13 %]')" align="center"> </td>[%END%] - <td>[%|loc%]background color of:[%END%]<UL><LI>[%|loc%]editable form areas (text areas, selection lists, etc.).[%END%]</LI></UL></td> -</tr> -<tr> - <td>color_14</td> - <td>[% color_14 %]</td> - <td style="background-color:[% color_14 %];cursor:pointer;" onclick="chooseColorNumber('color_14','[% color_14 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_14 %]</td> - <td style="background-color:[% conf.color_14 %];cursor:pointer;" onclick="chooseColorNumber('color_14','[% conf.color_14 %]')" align="center"> </td>[%END%] - <td>[%|loc%]Default background color of the tables.[%END%]</td> -</tr> -<tr> - <td>color_15</td> - <td>[% color_15 %]</td> - <td style="background-color:[% color_15 %];cursor:pointer;" onclick="chooseColorNumber('color_15','[% conf.color_15 %]')" align="center"> </td> - [% IF custom_css %]<td>[% conf.color_15 %]</td> - <td style="background-color:[% conf.color_15 %];cursor:pointer;" onclick="chooseColorNumber('color_15','[% conf.color_15 %]')" align="center"> </td>[%END%] - <td>[%|loc%]unused[%END%]</td> -</tr> -<tr> - <td>dark_color</td> - <td>[% dark_color %]</td> - <td style="background-color:[% dark_color %];" [% IF custom_css %]colspan="3"[%END%]> </td> - <td>[%|loc%]deprecated[%END%]</td> -</tr> -<tr> - <td>light_color</td> - <td>[% light_color %]</td> - <td style="background-color:[% light_color %];" [% IF custom_css %]colspan="3"[%END%]> </td> - <td>[%|loc%]deprecated[%END%]</td> -</tr> -<tr> - <td>text_color</td> - <td>[% text_color %]</td> - <td style="background-color:[% text_color %];" [% IF custom_css %]colspan="3"[%END%]> </td> - <td>[%|loc%]deprecated[%END%]</td> -</tr> -<tr> - <td>bg_color</td> - <td>[% bg_color %]</td> - <td style="background-color:[% bg_color %];" [% IF custom_css %]colspan="3"[%END%]> </td> - <td>[%|loc%]deprecated[%END%]</td> -</tr> -<tr> - <td>selected_color</td> - <td>[% selected_color %]</td> - <td style="background-color:[% selected_color %];" [% IF custom_css %]colspan="3"[%END%]> </td> - <td>[%|loc%]deprecated[%END%]</td> -</tr> -<tr> - <td>shaded_color</td> - <td>[% shaded_color %]</td> - <td style="background-color:[% shaded_color %];" [% IF custom_css %]colspan="3"[%END%]> </td> - <td>[%|loc%]deprecated[%END%]</td> -</tr> - -</table> - -<br /><br /> -<a class="actionMenuLinks" href="http://jigsaw.w3.org/css-validator/check?uri=referer">[%|loc%]W3C CSS validation tools[%END%]</a> -<br /><br /> - -</div> -<!-- end skinsedit.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/sso_login.tt2 b/sympa-6.1.20-src/web_tt2/sso_login.tt2 deleted file mode 100644 index 04fcebc2703be0935185b10f9263b93183be007e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/sso_login.tt2 +++ /dev/null @@ -1,36 +0,0 @@ -<!-- $Id: sso_login.tt2 7010 2011-02-02 14:29:24Z olivier.salaun $ --> -[% IF subaction == 'requestemail' %] - - [%|loc%]The mailing list server requires a working email address. Please provide your email address below. <p><i>Please note:</i> the email field may be pre-populated. If it is, then your authentication server has supplied an email address it associates with you. Whether you enter an address manually or accept the one provided, you will still need to confirm that this is a working email address by entering a confirmation password that will be sent to you. Please press the "Send me a confirmation password" to continue to the confirmation step.[%END%]<br /><p> - [%|loc%]A confirmation password will be sent to the address you supply, after pressing the button. This will take you to the next screen to confirm that your address is operational.[%END%] - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="previous_action" value="[% previous_action %]" /> - <input type="hidden" name="previous_list" value="[% previous_list %]" /> - <input type="hidden" name="referer" value="[% referer %]" /> - <input type="hidden" name="subaction" value="validateemail" /> - <input type="hidden" name="action" value="sso_login" /> - <input type="hidden" name="nomenu" value="[% nomenu %]" /> - <input type="hidden" name="auth_service_name" value="[% server.key %]" /> - - <label for="email"><strong>[%|loc%]Your e-mail address:[%END%]</strong><br /> - [% IF init_email %] - [% email %] - <input id="email" type="text" name="email" value="[% init_email %]" /> - [% ELSE %] - <input id="email" type="text" name="email" value="" /> - [% END %] - </label> - <input type="submit" name="action_sso_login" value="[%|loc%]Send me a confirmation password[%END%]"/> - </fieldset> - </form> - -[% ELSIF subaction == 'validateemail' %] - -<br /> - [%|loc(init_email)%]A confirmation password has been sent to your email address %1.<br />Please check your e-mail box for the message containing the confirmation link.[%END%] - <br /><br /> - -[% END %] -<!-- end sso_login.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/stats.tt2 b/sympa-6.1.20-src/web_tt2/stats.tt2 deleted file mode 100644 index bc3d832d89e79e0d981ca3feb06ae437eb18368e..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/stats.tt2 +++ /dev/null @@ -1,4 +0,0 @@ -<!-- $Id: stats.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> -<strong>[%|loc%]Shared document directory size:[%END%] [% shared_size %]K</strong><br /> -<strong>[%|loc%]Web archives size:[%END%] [% arc_size %]K</strong><br /> -<!-- end stats.tt2 --> \ No newline at end of file diff --git a/sympa-6.1.20-src/web_tt2/subindex.tt2 b/sympa-6.1.20-src/web_tt2/subindex.tt2 deleted file mode 100644 index 17d4845fc34115323e58ebbb0014ccbb19cc893d..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/subindex.tt2 +++ /dev/null @@ -1,64 +0,0 @@ -<!-- $Id: subindex.tt2 6513 2010-06-14 16:15:41Z david.verdin $ --> -<div class="block"> - -<h2>[%|loc%]Listing subscription to moderate[%END%]</h2> -<form class="noborder" action="[% path_cgi %]" method="post" name="myform"> -<fieldset> -<input type="hidden" name="list" value="[% list %]" /> - <table summary="[%|loc%]Listing subscription to moderate[%END%]" class="listOfItems"> - <tr> - <th><a href="#" onclick="toggle_selection(document.myform.pending_email);return false;" title="[%|loc%]Toggle Selection[%END%]">«»</a></strong></th> - <th colspan="2">[%|loc%]Email[%END%]</th> - <th>[%|loc%]Name[%END%]</th> - <th>[%|loc%]Date[%END%]</th> - <th>[%|loc%]Additional information[%END%]</th> - </tr> - - [% IF subscriptions %] - - [% FOREACH sub = subscriptions %] - - [% IF dark == '1' %] - <tr> - [% ELSE %] - <tr class="color0"> - [% END %] - <td> - <input type="checkbox" name="pending_email" value="[% sub.key %],[% sub.value.gecos %]" /> - </td> - <td colspan="2"> - [% sub.key %] - </td> - <td> - [% sub.value.gecos %] - </td> - <td class="text_center"> - [% sub.value.date %] - </td> - <td class="text_left"> - [% FOREACH ca_k IN list_conf.custom_attribute %]<b>[% ca_k.name %][%|loc%]:[%END%] </b>[% IF sub.value.custom_attribute.item(ca_k.id).value %][% sub.value.custom_attribute.item(ca_k.id).value %][% ELSE %]-[% END %]<br>[% END %] - </td> - </tr> - - [% IF dark == '1' %] - [% SET dark = 0 %] - [% ELSE %] - [% SET dark = 1 %] - [% END %] - - [% END %] - - [% ELSE %] - <tr colspan="4"><th>[%|loc%]No subscription requests[%END%]</th></TR> - [% END %] - </table> -<input type="hidden" name="previous_action" value="subindex" /> -<input type="hidden" name="previous_list" value="[% list %]" /> -<input class="MainMenuLinks" type="button" value="[%|loc%]Toggle Selection[%END%]" onclick="toggle_selection(document.myform.pending_email)" /> -<input class="MainMenuLinks" type="submit" name="action_add" value="[%|loc%]Add selected addresses[%END%]" /> -<input class="MainMenuLinks" type="submit" name="action_ignoresub" value="[%|loc%]Reject selected addresses[%END%]" /> -</fieldset> -</form> - -</div> -<!-- end subindex.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/subrequest.tt2 b/sympa-6.1.20-src/web_tt2/subrequest.tt2 deleted file mode 100644 index 328a6d77206f9bd34cda56d258950ac86a715065..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/subrequest.tt2 +++ /dev/null @@ -1,82 +0,0 @@ -<!-- $Id: subrequest.tt2 6099 2009-08-13 08:31:02Z olivier.salaun $ --> - - - [% IF status == 'auth' %] - - [% IF listconf.custom_attribute.size == 0 %] - [%|loc(list)%]You requested a subscription to list %1[%END%]. - [%|loc%]To confirm your request, please click the button below:[%END%]<br /> - [% ELSE %] [%|loc(list)%]You want to subscribe to list %1[%END%]. - [%|loc%]Please fill in the form below and then click the validation button[%END%]<br /> - <br /> - [% END %] - <br /><br /> - - <form action="[% path_cgi %]" method="post"> - <fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="email" value="[% user.email %]" /> - [% PROCESS edit_attributes.tt2 %] - - <input type="hidden" name="via_subrequest" value="1" /> - <input class="MainMenuLinks" type="submit" name="action_subscribe" value="[%|loc(list)%]I subscribe to list %1[%END%]" /> - </fieldset> - </form> - - [% ELSIF status == 'notauth_passwordsent' %] - - [%|loc(list)%]You requested a subscription to list %1[%END%]. - <br /><br /> - [%|loc%]To confirm your identity and prevent anyone from subscribing you to - this list against your will, a message containing an validation link was sent to the e-mail address you provided.[%END%] <br /><br /> - [%|loc(list)%]Check your mailbox for new messages and click this link. This will confirm your subscription to list %1.[%END%] - - [% ELSIF status == 'notauth_noemail' %] - - <form class="bold_label" action="[% path_cgi %]" method="post"> - <fieldset> - <label for="email">[%|loc%]Your e-mail address[%END%]</label> - <input type="text" name="email" size="30" /><br /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="action" value="subrequest" /> - <input type="hidden" name="via_subrequest" value="1" /> - <input class="MainMenuLinks" type="submit" name="action_subrequest" value="[%|loc%]submit[%END%]" /> - </fieldset> - </form> - - - [% ELSIF status == 'notauth' %] - - [%|loc(list)%]To confirm your subscription to list %1, please enter - your password below[%END%] - [% IF listconf.custom_attribute.size == 0 %] - [%|loc%], in addition to the personnal informations requested.[%END%] - [% END %] - - <form action="[% path_cgi %]" METHOD=POST> - <fieldset> - <label><b>[%|loc%]e-mail address[%END%]</b></label> [% email %]<br /> - <label for="passwd">[%|loc%]password[%END%]</label> - <input id="passwd" type="password" name="passwd" size="20" /><br /> - - [% PROCESS edit_attributes.tt2 %] - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="email" value="[% email %]" /> - <input type="hidden" name="previous_list" value="[% list %]" /> - <input type="hidden" name="previous_action" value="subrequest" /> - <input type="hidden" name="via_subrequest" value="1" /> - <input class="MainMenuLinks" type="submit" name="action_subscribe" value="[%|loc%]Subscribe[%END%]" /> - <input class="MainMenuLinks" type="submit" name="action_requestpasswd" value="[%|loc%]My password?[%END%]" /> - </fieldset> - </form> - - [% ELSIF status == 'notauth_subscriber' %] - - <strong>[%|loc(list)%]You are already subscribed to list %1[%END%].</strong> - <br /><br /> - - - [% PROCESS 'loginbanner.tt2' %] - - [% END %] -<!-- end subrequest.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/ticket.tt2 b/sympa-6.1.20-src/web_tt2/ticket.tt2 deleted file mode 100644 index d7fabc60500918c131f15370dc0f83020bf2116f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/ticket.tt2 +++ /dev/null @@ -1,44 +0,0 @@ -<!-- $Id: viewlogs.tt2 5197 2008-11-03 15:19:22Z david.verdin $ --> - -[% IF user.email %] -<h3>[%|loc%]The link you used is unvalid[%END%]</h3> -[% ELSE %] -<h3>[%|loc%]Sorry, this operation can't be performed[%END%]</h3> -[%END%] - -[% IF ticket_context.date %] - [%|loc(ticket_context.printable_date) %]A validation link was sent to you on %1. [%END%] - [% IF ticket_context.remote_addr %] - [%|loc(ticket_context.remote_addr) %](the validation link was requested from host %1) [%END%] - [%END%] -[%END%] - -<h3>[%|loc%]reason[%END%]</h3> -[% IF ticket_context.result == 'closed' -%] -[%|loc(ticket_context.status)%]The validation link has already been validated from host %1 .If you did not perform this validation, please report this confidentiality issue to your mail services administrator.[%END%] -[% IF user.email %] -<br/>[%|loc%]However, as you are logged in already, you can probably perform the action you requested anyway.[%END%] -[%END%] -[%END%] - -[% IF ticket_context.result == 'expired' -%] -[%|loc(ticket_context.printable_date)%]The validation link has expired[%END%]. -[% IF user.email %] -<br/>[%|loc%]However, as you are logged in already, you can probably perform the action you requested anyway.[%END%] -[% ELSE %] -[%|loc%]Please login or request a new validation link[%END%] -[%END%] -[%END%] - -[% IF ticket_context.result == 'not_found' -%] -[%|loc(ticket_context.printable_date)%]The validation link has an unknow format or has expired[%END%]. -[% IF user.email %] -<br/>[%|loc%]However, as you are logged in already, you can probably perform the action you requested anyway.[%END%] -[% ELSE %] -[%|loc%]Please login or request a new validation link[%END%] -[%END%] -[%END%] - -<!-- end viewlogs.tt2 --> - - diff --git a/sympa-6.1.20-src/web_tt2/title.tt2 b/sympa-6.1.20-src/web_tt2/title.tt2 deleted file mode 100644 index 9c118f7b42ae5b7b5d9c3fc761b0b46f1d522256..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/title.tt2 +++ /dev/null @@ -1,12 +0,0 @@ -<!-- $Id: title.tt2 10053 2013-12-24 13:54:30Z sikeda $ --> - -<!-- begin title.tt2 --> -[% IF conf.logo_html_definition %] -<div id="logo" >[% conf.logo_html_definition %]</div> -[% ELSE %] -<div id="logo" ><img src="[% icons_url %]/logo_sympa.png" alt="SYMPA logo"></div> -[% END %] -<div id="Title">[% robot_title %]<br /></div> -<div id="top"><a class="displayNone" href="#Paint">Skip to Content.</a></div> -<!-- end title.tt2 --> - diff --git a/sympa-6.1.20-src/web_tt2/tt2_error.tt2 b/sympa-6.1.20-src/web_tt2/tt2_error.tt2 deleted file mode 100644 index e8ae0fda34e2441896b1a008f9c607878a823f90..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/tt2_error.tt2 +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html lang="[% lang_tag %]" xml:lang="[% lang_tag %]" xmlns="http://www.w3.org/1999/xhtml"> -<!-- $Id: tt2_error.tt2 10054 2013-12-24 14:30:11Z sikeda $ --> - -<head> -<meta http-equiv="content-type" content="text/html; charset=utf-8" /> -<link rel="stylesheet" href="[% css_url %]/style.css" type="text/css" media="screen" title="Derived from style Blank Canvas by tw3k AT tw3k.tw3k.q3machines.net" /> - <title>[%|loc%]Sympa error - could not display web page[%END%]</title> -</head> - -<body id="error"> -<h1>[%|loc%]Sympa could not deliver the requested page for the following reason: [%END%]</h1><br /> -<br /> -[% IF tt2_error %] -<em>[% tt2_error %]</em><br /><br /> -[% ELSIF errors %] - [% PROCESS error.tt2 %] -[% END %] -<h2>[%|loc%]Please contact the listmaster.[%END%]</h2> - - <div class="search_form"> - <em>[%|loc%]Powered by[%END%]</em></td> - <a href="http://www.sympa.org/"> - <img src="[% icons_url %]/logo-s.png" alt="Sympa" /> - </a> -</body> -<!-- end tt2_error.tt2 --> -</html> - diff --git a/sympa-6.1.20-src/web_tt2/viewbounce.tt2 b/sympa-6.1.20-src/web_tt2/viewbounce.tt2 deleted file mode 100644 index 97a409dc58eda9ba6ea53a3517a0abafa7bfc468..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/viewbounce.tt2 +++ /dev/null @@ -1,8 +0,0 @@ -<!-- $Id: viewbounce.tt2 5198 2008-11-03 16:06:31Z david.verdin $ --> - -<pre> -[% FILTER html_entity %] -[% INSERT $lastbounce_path IF lastbounce_path %] -[% END %] -</pre> -<!-- end viewbounce.tt2 --> \ No newline at end of file diff --git a/sympa-6.1.20-src/web_tt2/viewlogs.tt2 b/sympa-6.1.20-src/web_tt2/viewlogs.tt2 deleted file mode 100644 index 1f88bc6b4d07e36961ff447794283256e2e5e5b4..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/viewlogs.tt2 +++ /dev/null @@ -1,246 +0,0 @@ -<!-- $Id: viewlogs.tt2 7477 2012-07-16 16:13:16Z etiennemeleard $ --> -<div class="block"> - -<h2>[%|loc%]Logs view[%END%]</h2> - -[% IF action != 'search' %] -<div id="page_size"> -[%|loc%]Page size[%END%] - <form action="[% path_cgi %]"> - <fieldset> - <input type="hidden" name="sortby" value="[% sortby %]" /> - <input type="hidden" name="action" value="viewlogs" /> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="target_type" value="[% target_type %]" /> - <input type="hidden" name="target" value="[% target %]" /> - <input type="hidden" name="date_from" value="[% date_from %]" /> - <input type="hidden" name="date_to" value="[% date_to %]" /> - <input type="hidden" name="type" value="[% type %]" /> - <input type="hidden" name="ip" value="[% ip %]" /> - <select name="size" onchange="this.form.submit();"> - <option value="[% size %]" selected="selected">[% size %]</option> - <option value="25">25</option> - <option value="50">50</option> - <option value="100">100</option> - <option value="500">500</option> - </select> - </fieldset> - </form> -<br /> - [% IF prev_page %] - <a href="[% path_cgi %]/viewlogs/[% list %]/[% prev_page %]/[% size %]/[% sortby %]"><img src="[% icons_url %]/left.png" alt="[%|loc%]Previous page[%END%]" /></a> - [% END %] - [% IF page %] - [%|loc%]page[%END%] [% page %] / [% total_page %] - [% END %] - [% IF next_page %] - <a href="[% path_cgi %]/viewlogs/[% list %]/[% next_page %]/[% size %]/[% sortby %]"><img src="[% icons_url %]/right.png" alt="[%|loc%]Next page[%END%]" /></a> - [% END %] - - - -</div> -[% END %] - -<form id="logs_form" name="log_form" method="post" action="[% path_cgi %]"> -<fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="action" value="viewlogs" /> - - <label for="target_type">[%|loc%]Search by:[%END%]</label> - <select id="target_type" name="target_type"> - - [% IF target_type == 'target_email' %] - <option value="[% target_type %]">[%|loc%]Email[%END%]</option> - <option value="none">-----------</option> - [% ELSE %] - [% IF target_type == 'msg_id' %] - <option value="[% target_type %]">[%|loc%]Message Id[%END%]</option> - <option value="none">-----------</option> - [% END %] - [% END %] - - <option value="target_email">[%|loc%]Email[%END%]</option> - <option value="msg_id">[%|loc%]Message Id[%END%]</option> - <option value="none">-----------</option> - </select> - - <input id="target" type="text" name="target" value="[% target %]" size ="20"/><br /> - - <label for="date_from">[%|loc%]Search by date from:[%END%]</label> - <input type="text" id="date_from" name="date_from" maxlength="10" size="10" value="[% date_from %]" onfocus="visuCal(this,param_ddeb);" onblur="masqueCal(this);" > - <label for="date_to">[%|loc%]to:[%END%]</label> - <input type="text" id="date_to" name="date_to" maxlength="10" size="10" value="[% date_to %]" onfocus="visuCal(this,param_dfin)" onblur="masqueCal(this)" ><noscript><em>[%|loc%]ex: 24-05-2006[%END%]</em></noscript> - <br /> - <label for="type">[%|loc%]Search by type:[%END%]</label> - <select id="type" name="type"> - [% IF type %] - [% IF type == 'all_actions' %] - <option value="all_actions">[%|loc%]All[%END%]</option> - <option value="none">------------</option> - [% ELSE %] - <option value="[% type %]">[% type %]</option> - <option value="none">------------</option> - [% END %] - [% END %] - <option value="all_actions">[%|loc%]All[%END%]</option> - <option value="none">------------</option> - <option value="authentication">[%|loc%]Authentication[%END%]</option> - <option value="bounced">[%|loc%]Bounce management[%END%]</option> - <option value="list_management">[%|loc%]List Management[%END%]</option> - <option value="message">[%|loc%]Message[%END%]</option> - <option value="preferences">[%|loc%]User preferences[%END%]</option> - <option value="subscription">[%|loc%]User management[%END%]</option> - <option value="shared">[%|loc%]Web documents management[%END%]</option> - <option value="none">------------</option> - </select><br /> - - [% IF is_listmaster %] - - <label for="ip">[%|loc%]Search by IP:[%END%]</label> - <input id="ip" type="text" name="ip" value="[% ip %]"/><br /> - [% END %] - - <label for="submit"></label> - <input class="MainMenuLinks" id="btnsubmit" type="submit" name="action_viewlogs" value="[%|loc%]View[%END%]" /> - - <input class="MainMenuLinks" id="btnreset" type="button" value="[%|loc%]Reset[%END%]" onclick="javascript:clear_log_form()"/> -</fieldset> -</form> - - - -<em>[%|loc%]Search period: [%END%]<strong>[%|locdt(date_from_formated)%]%d %b %Y %H:%M:%S[%END%]</strong> [%|loc%]to[%END%] <strong>[%|locdt(date_to_formated)%]%d %b %Y %H:%M:%S[%END%]</strong></em><br /> -[% IF total_results %] -<em>[%|loc(list)%]Research was carried out in list <strong>%1</strong>.[%END%]</em><br /> -<br /> -<em>[%|loc(total_results)%]%1 results[%END%].</em> -<div id="table_container"> -<table class="listOfItems" summary="logs table"> - <tr> - [% IF sortby == 'date' %] - <th class="sortby"> - [%|loc%]Sub date[%END%] - [% ELSE %] - <th> - <a href="[% path_cgi %]/viewlogs/[% list %]/1/[% size %]/date" >[%|loc%]Date[%END%]</a> - [% END %] - </th> - - <th> - <a href="[% path_cgi %]/viewlogs/[% list %]/1/[% size %]/list">[%|loc%]List[%END%]</a> - </th> - - [% IF sortby == 'action' %] - <th class="sortby"> - [%|loc%]Action[%END%] - [% ELSE %] - <th> - <a href="[% path_cgi %]/viewlogs/[% list %]/1/[% size %]/action">[%|loc%]Action[%END%]</a> - [% END %] - </th> - - <th> - [%|loc%]Parameters[%END%] - </th> - - <th> - [%|loc%]Target Email[%END%] - </th> - - <th> - [%|loc%]Message ID[%END%] - </th> - - <th> - [%|loc%]Status[%END%] - </th> - - <th> - [%|loc%]Error type[%END%] - </th> - - [% IF sortby == 'email' %] - <th class="sortby"> - [%|loc%]User Email[%END%] - [% ELSE %] - <th> - <a href="[% path_cgi %]/viewlogs/[% list %]/1/[% size %]/email">[%|loc%]User Email[%END%]</a> - [% END %] - </th> - - [% IF is_listmaster || is_owner %] - <th> - [%|loc%]User IP[%END%] - </th> - [% END %] - - <th> - [%|loc%]Service[%END%] - </th> - - </tr> - - [% FOREACH l = log_entries %] - [% IF dark == '1' %] - <tr> - [% ELSE %] - <tr class="color0"> - [% END %] - - [% IF l.status == 'error' %] - <tr class="bg_color_error"> - [% END %] - <td> - [% l.date %] - </td> - [% IF is_listmaster || is_owner %] - <td> - [% l.list %] - </td> - [% END %] - <td> - [% l.action %] - </td> - <td> - [% l.parameters %] - </td> - <td> - [% l.target_email %] - </td> - <td> - [% IF l.msg_id %] - <a href="javascript:searched_by_msgId('[% l.msg_id %]')" title="[%|loc%]view other events related to this message id.[%END%]">[%|loc%]Other events[%END%]</a> - [% END %] - </td> - <td> - [% l.status %] - </td> - <td> - [% l.error_type %] - </td> - <td> - [% l.user_email %]</span> - </td> - [% IF is_listmaster || is_owner %] - <td> - [% l.client %] - </td> - [% END %] - <td> - [% l.daemon %] - </td> - </tr> - [% IF dark == '1' %] - [% SET dark = 0 %] - [% ELSE %] - [% SET dark = 1 %] - [% END %] - - [% END %] -</table> -</div> -[% END %] - -</div> -<!-- end viewlogs.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/viewmod.tt2 b/sympa-6.1.20-src/web_tt2/viewmod.tt2 deleted file mode 100644 index a2d75c7f42c33bbe0378e98d313bba2046cb2a0f..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/viewmod.tt2 +++ /dev/null @@ -1,45 +0,0 @@ -<!-- $Id: viewmod.tt2 10007 2013-12-19 14:11:46Z sikeda $ --> - - <form action="[% path_cgi %]" method="post" name="moderate_mail"> - <fieldset> - <input type="hidden" name="list" value="[% list %]" /> - <input type="hidden" name="id" value="[% id %]" /> - <input type="hidden" name="file" value="[% file %]" /> - - [%- IF topic_required -%] - <input class="MainMenuLinks" type="submit" name="action_distribute" value="[%|loc%]Distribute[%END%]" onclick="return checkbox_check_topic(moderate_mail)" /> - [%- ELSE -%] - <input class="MainMenuLinks" type="submit" name="action_distribute" value="[%|loc%]Distribute[%END%]" /> - [%- END -%] - <input class="MainMenuLinks" type="submit" name="action_reject" value="[%|loc%]Reject[%END%]" /> - - <select name="message_template"> - <option value="reject">[%|loc %]Default rejection message[%END%]</option> - <option value="quiet">[%|loc %]Do Not Notify[%END%]</option> - [% FOREACH file = available_files %] - <option value="reject_[% file %]"> [% file %]</option> - [%- END- %] - </select> -</fieldset> - -</form> - - [%- IF request_topic -%] - <form action="[% path_cgi %]" method="post" name="moderate_mail_2"> - <fieldset> - <br /><br /> - [%|loc%]This list is configured to require topic(s).[%END%] - <br /> - <label for="topic_[%t.name%]">[%|loc%]Please select one or more topic(s) that corresponds to your message below:[%END%] - <br /><br /> - [% FOREACH t = available_topics %] - <input id="topic_[%t.name%]" type="checkbox" name="topic_[%t.name%]" value="1" /> <label for="topic_[%t.name%]">[% t.title %] </label> - <br /> - [%- END- %] - <br /> -</fieldset> -</form> -[%- END -%] -[% PROCESS 'msg00000.html' %] - -<!-- end viewmod.tt2 --> diff --git a/sympa-6.1.20-src/web_tt2/your_lists.tt2 b/sympa-6.1.20-src/web_tt2/your_lists.tt2 deleted file mode 100644 index a2272723478132688bc115fbb0dce3fe5f8e1723..0000000000000000000000000000000000000000 --- a/sympa-6.1.20-src/web_tt2/your_lists.tt2 +++ /dev/null @@ -1,29 +0,0 @@ -<!-- $Id: your_lists.tt2 6184 2009-09-04 12:57:30Z david.verdin $ --> - -[% IF user.email %] - -<div class="MenuBlock"> -[% IF which_info %] -<ul class="listenum" > - <li> - <a class="input" href="[% path_cgi %]/suspend_request" >[%|loc%]Manage your subscriptions[%END%]</a><br /> - </li> - [% FOREACH l = which_info %] -<li> - [% IF l.value.admin %]<a class="actionMenuLinks" href="[% path_cgi %]/admin/[% l.key %]" > -[%|loc%]admin[%END%]</a>[% END %] - <a class="list_menu_links" href="[% path_cgi %]/info/[% l.key %]" > -[% hidden_head %][% l.key %][% hidden_end %]</a><br /> - <span>[% l.value.subject %]</span><br /> - </li> - [% END %] - </ul> - -[% ELSE %] -<p>[%|loc%]No mailing list available.[%END%]</p> -[% END %] - -</div> -[% END %] - -<!-- end login_menu.tt2 --> \ No newline at end of file diff --git a/tools/511/511-finder b/tools/511/511-finder new file mode 100755 index 0000000000000000000000000000000000000000..f78a72cc0373cace953d4ddb5e6190c671deec83 --- /dev/null +++ b/tools/511/511-finder @@ -0,0 +1,26 @@ +#!/bin/sh +# 511-finder - extracts and saves the dsn=5.1.1 bounces from postfix.log + +# first sleep for 5 mins since we run at the same time as the logs are rotated +sleep 300 + +if [ ! -d /var/log/511 ]; then + mkdir /var/log/511 +fi + +file=`date +%Y-week%V-day%u` + +# get a list of all postfix logs last modified within a day (since we +# rotate pretty aggressively). there is a small chance of counting stuff +# from the previous day, but then the previous day's count missed stuff +# too, so it should work out +logs=`find /var/log/postfix.log* -mtime -1` + +if [ ! -f /var/log/postfix.log ]; then + echo "ERROR: postfix.log does not exist, exiting" +fi + +# grab all 550 5.1.1 errors, but make sure they look like they are really +# accounts that don't exist, that the line contains a to=<, and extract the +# email address from them +grep '550 5\.1\.1' $logs |grep -E '(nknown|xist|o mailbox|nvalid|o such)' |grep 'to=<' |awk -F'to=<' '{print $2}'|awk -F'>' '{print $1}' |sort -u >/var/log/511/$file diff --git a/tools/511/README b/tools/511/README new file mode 100644 index 0000000000000000000000000000000000000000..ec65fe0138f61ab0eff6e7d7f29f8a846e3b4c72 --- /dev/null +++ b/tools/511/README @@ -0,0 +1,24 @@ +Riseup 5.1.1 tools +------------------ +These tools help determine when addresses on sympa lists that we're +sending to are bad. The sympa bounce processing has some corner cases +where bad addresses don't get removed and they tend to build up over time. + +511-finder - cronjob that extracts and saves the dsn=5.1.1 bounces from + postfix.log's +gather-511-logs - a riseup script gather the 511 bounce logs from all the MXs +sympa-persistent-511-addresses - look at the lists of 5.1.1 bounces and + report those that are persistently bad +findsubscribed - compare a list of addresses with current subscribers + +How to use them +--------------- +1) 511-finder runs via cron on the outbound MX hosts and keeps track of which + addresses get 5.1.1 bounces each day + +2) Every 6 months, you run gather-511-logs to fetch all these daily logs to one location. + +3) Then you run sympa-persistent-511-addresses on the logs and it reports the addresses it's seen bounce more than a certain number of times over a certain time period. + +4) Then with that list of bad addresses, you run findsubscribed to determine which of the addresses are currently subscribers and generate some reports about which lists have bad subscribers (this can help spot list admins that are bulk resubscribing) + diff --git a/tools/511/findsubscribed b/tools/511/findsubscribed new file mode 100755 index 0000000000000000000000000000000000000000..8e188a4940ae6537718911292a0c084fef7b6554 --- /dev/null +++ b/tools/511/findsubscribed @@ -0,0 +1,59 @@ +#!/usr/bin/perl -w +# findsubscribed - compare a list of addresses with current subscribers +# and return the ones that are currently subscribed. Also calculate which lists +# have the most of these addresses +# NOTE: this script requires the current user has read access to the db +# Matt Taggart <taggart@riseup.net> 2012-11 + +if (!$ARGV[0]) { + print "usage: find-bad-addresses <file>\n"; + exit; +} + +$file=$ARGV[0]; + +$listsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; + +open(BAD, "$file") or die "cannot open $file\n"; +open(LISTDUMP, "$listsql|") or die "cannot get dump of address+list pairs from database\n"; +open(FOUND, ">found") or die "cannot open found\n"; +open(BYLISTC, ">bylistcount") or die "cannot open bylistcount\n"; +open(BYLISTP, ">bylistpercent") or die "cannot open bylistpercent\n"; + +while (<BAD>) { + chomp; + $bad{$_}++; +} + +while (<LISTDUMP>) { + chomp; + # match list and sane address + m/^(.*)\t<?(.*\@.*?)>?\s*$/; + $list=$1; + $address=$2; + + $listcount{$list}++; + + if ( $bad{$address} ) { + $badlists{$list}++; + $found{$address}++; + } +} + +foreach $address ( sort keys %found) { + print FOUND "$address\n"; +} + +foreach $list ( sort { $badlists{$b} <=> $badlists{$a} } keys %badlists) { + $percent{$list} = ( $badlists{$list} / $listcount{$list} ) * 100; + printf BYLISTC '%s %s (%.2f%%)', $badlists{$list}, $list, $percent{$list}; + print BYLISTC "\n"; +} + +foreach $list ( sort { $percent{$b} <=> $percent{$a} } keys %percent) { + printf BYLISTP '%.2f%% %s (%s)', $percent{$list}, $list, $badlists{$list}; + print BYLISTP "\n"; +} + +print "Done. Found addresses in 'found', counts by domain in 'bydomain',\n"; +print " by list count in 'bylistcount', by list percent in 'bylistpercent'\n"; diff --git a/tools/511/gather-511-logs b/tools/511/gather-511-logs new file mode 100755 index 0000000000000000000000000000000000000000..02326d3080783c7ec44be1666e1b496078fa7c2e --- /dev/null +++ b/tools/511/gather-511-logs @@ -0,0 +1,22 @@ +#!/bin/sh +# gather-511-logs - a riseup script gather the 511 bounce logs from all the MXs +# taggart 2012-12 + +# make any error fatal +set -e + +minivet='mx1 mx4 mx7' +moorhen='mx2 mx5 mx8' +motmot='mx3 mx6' +hosts="minivet moorhen motmot" + +for host in $hosts; do + for mx in $(eval echo \$$host); do + echo "### Gathering logs from $mx on $host ###" + if [ ! -d logs/$mx ]; then + mkdir logs/$mx + fi + (cd logs/$mx;rsync -avz $host.riseup.net:/vservers/$mx/var/log/511/* .) + done +done + diff --git a/tools/511/sympa-persistent-511-addresses b/tools/511/sympa-persistent-511-addresses new file mode 100755 index 0000000000000000000000000000000000000000..878955439a1dfc4607554e7778d066d97fed54cd --- /dev/null +++ b/tools/511/sympa-persistent-511-addresses @@ -0,0 +1,41 @@ +#!/usr/bin/perl -w +# sympa-persistent-511-addresses - look at the lists of 5.1.1 bounces and +# report those that are persistently bad +# taggart 2012-11-19 + +# Because the 511-finder does a uniq on the daily address report, an address +# with multiple bounces in a day will only be listed once. This means that +# the threshold set below will result in addresses being reported that had +# bounces on at least that many seperate days. This should help to eliminate +# the "server was misconfigured and bounced mail for a day" false positive +# potential. + +# number of 5.1.1 bounces over which we report +$threshold=10; +# time period of logs we look at, days from today +$time='182'; + +#$logdir='/var/log/511/'; +$logdir='./logs/'; + +# use all files in the last 6 months +$filelist=`find $logdir ! -regex mx1/ -mtime -$time`; +#$filelist=`find $logdir/mx1/ -mtime -$time`; + +@files = split /\n/,$filelist; + +foreach $file (@files) { + open(FILE, "$file") or die "cannot open $file\n"; + + while (<FILE>) { + chomp; + $bad{$_}++; + } +} + +foreach $address (sort { $bad{$b} <=> $bad{$a} } keys %bad) { + last if ( $bad{$address} < $threshold ); + #print "$bad{$address} $address\n"; + print "$address\n"; +} + diff --git a/tools/README b/tools/README new file mode 100644 index 0000000000000000000000000000000000000000..2d4d1f0f2a9eb7a961fcb854b110a19cc4eb35b2 --- /dev/null +++ b/tools/README @@ -0,0 +1,91 @@ +Riseup sympa tools +================== +custom scripts for list maintenance, ecology, manipulation, fixing, and data +gathering. + + +currently used / reviewed and useful +------------------------------------ +bad-domains/ - scripts to find and clean up long term unresolving domains +biglists - list that reports changes in the list of lists with >5k subscribers + is run via cron with mail sent to listmaster +changescenari - script to adjust scenari values in list config files +checkbanned.pl - check the sympa database for traces of users we've banned, + uses lists of regexs installed by puppet +countbounces - generate a list of lists with high bounce scores addresses +countbouncesuser - generates a list of addresses with high bounce scores +countlang - count the number of lists per specified language type +countscenari - count types of scenari +countsendtypes - count send types, countscenari can do the same thing but + not quite as nice, they should be merged +ecology - clean up old unused lists +findaccount - find all traces of a user in the db +findadmin - find and list admins that match a substring +findbadlists - find lists that are in the db but not expl, and vice versa +findbogus - find addresses that aren't rfc valid, produce some reports +findbounces - find users that match a substring and list bounce score +findnoarchive - print a list of lists that have archives turned off +findnonsubscribed - list all users that do not have any subscriptions (sympa + should clean these up, but this can check) +findoldsmall - list old lists with only 0 or 1 subscribers +findsimilarlists - find lists that are similar, could be spammers +finduser - find users in the subscriber table +fix_reply_to_settings_6.1.9 - fix reply to settings for lists +listaolbounces - list aol users with high bounce scores +listlists - list open lists +listlongnames - list the 10 longest list names (for finding limit problems) +listmembers - list members of a list +nukelist - removes all traces of a list from the db +nukeuser - completely removes a user, use with caution +nukeusers - completely removes a list of users, use with caution +priority/ - scripts for adjusting lists priorities +rebuildarchives.rb - rebuld the archives slowly so as to not overload the server +remind/ - stuff for issuing remind processes from the commandline +remove_user - remove a user from a list/lists +stats/ - scripts tha generate statistics +testing/ - scripts used to set up testing environments +typos/ - system and data to find typo domains and remove them from lists + + +historical stuff, might be useful again +--------------------------------------- +aol/ - some old stuff for cleaning up aol bounces +backup - old backup script, unknown state +common - file sourced by other scripts to get the db info so it doesn't need + to be embedded in each script. we're moving all script to just assume that + the running user has a my.cnf setup. this will go away once it's not used + by other scripts + +unknown, needs to be reviewed +----------------------------- +changeUserDomains.pl +checkdaemons - check if daemons are running, untested +cleanspool - cleans spools, untested. sympa should be doing this, but it might + be nice to have a tool that checks +configfixin/ - some scripts to fix config files, maybe replaced by + changescenari? +create-admins-file - generates a list of all admins, don't we do this via a + dynamic list now? +create_list_table - bit ofg sql for creating the db, likely out of date and + should be cleaned up +decrypt - some old thing to decrypt passwds, delete? +disable_annoying_tasks +email-unsub-instruct - sorta like remind +find_lists_without_owners.rb - untested +findmissing - check logs for "Unable to open", delete? +fs.php - some php functions, unsure if needed +lib/ - maybe needed by testing stuff? +list.close - script to close a list, unneeded? +list.common - ? +list_stats - some old stats, maybe replaced by stats/ +merge-arctxt +missingkeyfix.p +pluckspam.pl +pluckspam.pl.old +sanity-check +sympa_pass.pl +tlsreport +updatedirectory.php +updatedirectory.rb - generates the web directory of lists +user.unsubscribe +withincludes diff --git a/tools/aol/README b/tools/aol/README new file mode 100644 index 0000000000000000000000000000000000000000..99b0db2a43a4545ba52f9232ebb5f51be778062f --- /dev/null +++ b/tools/aol/README @@ -0,0 +1,6 @@ +This directory appears to be some scripts elijah wrote to clean up +AOL spam reports or something. Before importing it from svn to git +I removed the emails/ and rawdumps/ directories since they listed +email addresses and this is going to be a public git repo. + +-- 20110326 taggart diff --git a/tools/aol/extract_aol_addresses b/tools/aol/extract_aol_addresses new file mode 100644 index 0000000000000000000000000000000000000000..20f3c18d00529bd12d9ffa50704cacc8ef318c75 --- /dev/null +++ b/tools/aol/extract_aol_addresses @@ -0,0 +1,10 @@ + +for i in rawdumps/*; do + echo emails/`basename $i`.eml + grep 'email' $i | cut -f2 -d\ > emails/`basename $i`.eml +done + +for i in rawdumps/*; do + echo emails/`basename $i`.aol + grep 'email' $i | grep 'aol.com' | cut -f2 -d\ > emails/`basename $i`.aol; +done diff --git a/tools/aol/find_top_10_reported_lists b/tools/aol/find_top_10_reported_lists new file mode 100644 index 0000000000000000000000000000000000000000..0cabcfca8d07e7bcf076b85dd9be49194a18f4f0 --- /dev/null +++ b/tools/aol/find_top_10_reported_lists @@ -0,0 +1,4 @@ + +trash="/home/elijah/.mozilla-thunderbird/elijah/Mail/Local Folders/Trash" +grep '^Subject: \[' "$trash" | sed 's/.*\[\(.*\)\].*/\1/' | sort | uniq -c | sort -rn | head -10 + diff --git a/tools/backup b/tools/backup new file mode 100755 index 0000000000000000000000000000000000000000..eb4476c140adadffeb37ad8c6537e1da5c15b540 --- /dev/null +++ b/tools/backup @@ -0,0 +1,61 @@ +#!/bin/sh + +# +# this scripts backs up vital sympa data and copies it to a remote machine. +# +# TODO: couldn't get working with mysql user 'sympa'. why? should NOT be root. +# +# to get rsync working without specifying a password: +# (list machine is called 'list' and backup machine is called 'backup') +# sympa@list> ssh-keygen -t dsa +# sympa@backup> scp sympa@list:~/.ssh/id_dsa.pub ~ +# sympa@backup> cat ~/id_dsa.pub >> ~/.ssh/authorized_keys +# + +source ./common + +today=`date +%Y%m%d` +cd /var/backups/sympa + +# tar up all config files +echo "1. tar up all the config files" +tar --create --file=configs.$today.tar --files-from=/dev/null +find /home/sympa/expl -maxdepth 3 -type f -name config \ + -exec tar -P --append --file=configs.$today.tar \{\} \; +echo + +# tar up sympa installation +echo "2. tar up sympa installation" +tar -Pcf sympa.$today.tar /home/sympa/etc /home/sympa/bin /home/sympa/tools +echo + +# export data +echo "3. export mysql databases" +mysqldump --user=$DB_USER --password=$DB_PASS -T/var/backups/sympa $DB_NAME + +# rename for today's date +echo "4. tag dumps with proper date" +mv subscriber_table.sql subscriber_table.$today.sql +mv subscriber_table.txt subscriber_table.$today.txt +mv user_table.sql user_table.$today.sql +mv user_table.txt user_table.$today.txt +echo + +# compress files +echo "5. compress things" +bzip2 -q -f /var/backups/sympa/* +echo + +# copy to backup server +echo "6. sync to backup server:" +rsync -rv --size-only --delete -e ssh \ + /var/backups/sympa \ + mail.riseup.net:/var/backups +echo + +# remove old backup files +echo "7. remove old backup files" +find . -mtime +14 -exec rm \{\} \; +echo + +echo "done" diff --git a/tools/bad-domains/README b/tools/bad-domains/README new file mode 100644 index 0000000000000000000000000000000000000000..957559e60dea4fad8897f027bfb8a1eb56e6d337 --- /dev/null +++ b/tools/bad-domains/README @@ -0,0 +1,19 @@ +Bad Domains +----------- +These scripts are for dealing with the fact that sympa's bounce management +processing isn't good at removing bad addresses that only receive a low +volume of mail. + +sympa-bad-domains - get a list of email addresses from sympa and determine + which domains don't currently resolve. Intended to be run by cron once + a month. + +sympa-persistent-bad-domains - using the last 3 results of sympa-bad-domains + list all domains that are persistently bad. + +find-bad-addresses - using the list of persistent bad domains from + sympa-persistent-bad-domains, find all the addresses for those domains + and return a list of addresses and a list of address count by domain. + +-- +Matt Taggart <taggart@riseup.net> 2011 diff --git a/tools/bad-domains/find-bad-addresses b/tools/bad-domains/find-bad-addresses new file mode 100755 index 0000000000000000000000000000000000000000..cb88bc0fe4bea7bf081f88f388ffe3272b4e8fc9 --- /dev/null +++ b/tools/bad-domains/find-bad-addresses @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# find-bad-addresses - using a list of bad domains, find all the addresses +# for those domains and return a list of addresses and lists of address +# count by domain, by list count, and by list percent. +# NOTE: this script requires the current user has read access to the db +# Matt Taggart <taggart@riseup.net> 2011-06 + +if (!$ARGV[0]) { + print "usage: find-bad-addresses <file>\n"; + exit; +} + +$file=$ARGV[0]; + +#$file='20110601'; +$addresssql='mysql -N --batch --database=sympa --execute "select email_user from user_table"'; +$listsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; + +open(DOMAINS, "$file") or die "cannot open $file\n"; +open(ADDRESSDUMP, "$addresssql|") or die "cannot get dump of addresses from database\n"; +open(LISTDUMP, "$listsql|") or die "cannot get dump of address+list pairs from database\n"; +open(ADDRESSES, ">addresses") or die "cannot open addresses\n"; +open(BYDOMAIN, ">bydomain") or die "cannot open bydomain\n"; +open(BYLISTC, ">bylistcount") or die "cannot open bylistcount\n"; +open(BYLISTP, ">bylistpercent") or die "cannot open bylistpercent\n"; + +# load all the addresses into a hash of arrays +# this is _way_ faster than doing lost of sql queries and currently (for +# lists.riseup.net) is about 62mb +while (<ADDRESSDUMP>) { + chomp; + m/.*?\@(.*)$/; + push @{ $dump{$1} },"$_"; +} + +while (<DOMAINS>) { + chomp; + $domain=$_; + foreach (@{ $dump{$domain} }) { + print ADDRESSES "$_\n"; + $bad{$domain}++; + } +} + +while (<LISTDUMP>) { + chomp; + m/^(.*)\t.*?\@(.*?)$/; + # keep a count of the addresses per list + $listcount{$1}++; + # if the domain had bad addresses, increment the count for that list + if ( $bad{$2} ) { + $badlists{$1}++; + } +} + +foreach $domain ( sort { $bad{$b} <=> $bad{$a} } keys %bad) { + print BYDOMAIN "$bad{$domain} $domain\n"; +} + +foreach $list ( sort { $badlists{$b} <=> $badlists{$a} } keys %badlists) { + $percent{$list} = ( $badlists{$list} / $listcount{$list} ) * 100; + printf BYLISTC '%s %s (%.2f%%)', $badlists{$list}, $list, $percent{$list}; + print BYLISTC "\n"; +} + +foreach $list ( sort { $percent{$b} <=> $percent{$a} } keys %percent) { + printf BYLISTP '%.2f%% %s (%s)', $percent{$list}, $list, $badlists{$list}; + print BYLISTP "\n"; +} + +print "Done. Address list in 'addresses', counts by domain in 'bydomain',\n"; +print " by list count in 'bylistcount', by list percent in 'bylistpercent'\n"; diff --git a/tools/bad-domains/sympa-bad-domains b/tools/bad-domains/sympa-bad-domains new file mode 100755 index 0000000000000000000000000000000000000000..cbe64a2284f3b10fb1b5a1a4c3972a957a2be388 --- /dev/null +++ b/tools/bad-domains/sympa-bad-domains @@ -0,0 +1,80 @@ +#!/usr/bin/perl -w +# sympa-bad-domains - get a list of email addresses from sympa and determine +# which domains don't currently resolve +# Matt Taggart <taggart@riseup.net> 2010-2011 +# depends on EMail::Valid, apt-get install libemail-valid-perl +# NOTE: this script requires the current user has read access to the db + +# we need to use a local copy of Parallel::ForkManager because we need 0.7.6 +use lib '.'; +use Email::Valid; +use Parallel::ForkManager 0.7.6; +use POSIX qw(strftime); + +# once we get a newer version of Email::Valid we can set the tcp_timeout +# this works with 0.184 (which is in squeeze). This might help prevent +# forked copies getting tied up we'd need to test +#$Email::Valid::Resolver->tcp_timeout(30); + +# the number of parallel copies to run +$copies=20; + +$outdir='/var/log/sympa/bad-domains/'; +$outfile=strftime "%Y-%m", localtime; + +if ( ! -d $outdir ) { + die "Output directory $outdir does not exist\n"; +} + +$rundump='mysql -N --batch --database=sympa --execute "select email_user from user_table"'; + +open(LIST,"$rundump|") or die "Cannot get addresses from sympa db\n"; +open(OUT,">$outdir/$outfile") or die "Cannot open output file\n"; + +$pm = new Parallel::ForkManager($copies); + +$pm -> run_on_finish ( + sub { + my ($pid, $exit_code, $ident, $exit_signal, $core_dump, $ref ) = @_; + + # add the returned hash reference to the existing hash + @baddomains{ keys %{$ref} } = values %{$ref}; + } +); + +# first throw out the bogus addresses +while (<LIST>) { + ($address, $domain) = m/<?(.+@(.+))>?$/; + if ( ! defined $domain ) { + print "ERROR: can't detect domain, line is $_, skipping\n"; + next; + } + # if we already have a valid address for this domain, skip it + next if ( exists $valid{$domain} ); + + if (Email::Valid->address( -address => $address, + -fqdn => 1, + -local_rules => 1, + -tldcheck => 1 )) { + # push just the domain into a hash to get rid of dups + $valid{$domain}=1; + } +} + + +# then do an mx check on the rest +foreach $domain (sort keys %valid) { + $pm->start and next; + unless(Email::Valid->address( -address => "foo\@$domain", + -mxcheck => 1 )) { + # a temporary hash to return + $hash{$domain}=1; + } + $pm->finish(0, \%hash); +} + +$pm->wait_all_children; + +foreach $domain (sort keys %baddomains) { + print OUT "$domain\n"; +} diff --git a/tools/bad-domains/sympa-persistent-bad-domains b/tools/bad-domains/sympa-persistent-bad-domains new file mode 100755 index 0000000000000000000000000000000000000000..01d631ecb3e077ffaf944ce64fab645a3ce126c8 --- /dev/null +++ b/tools/bad-domains/sympa-persistent-bad-domains @@ -0,0 +1,25 @@ +#!/usr/bin/perl -w +# sympa-persistent-bad-domains - compare the lists of bad domains and report +# those that are persistently bad +# taggart 2011-05-30 + +$logdir='/var/log/sympa/bad-domains'; + +# use the last three runs +$filelist=`ls -rt $logdir/20*|tail -3`; + +@files = split /\n/,$filelist; + +foreach $file (@files) { + open(FILE, "$file") or die "cannot open $file\n"; + + while (<FILE>) { + chomp; + $bad{$_}++; + } +} + +foreach $domain (sort { $bad{$b} <=> $bad{$a} } keys %bad) { + last if ( $bad{$domain} < 3 ); + print "$domain\n"; +} diff --git a/tools/badconfigdetector/detector b/tools/badconfigdetector/detector new file mode 100755 index 0000000000000000000000000000000000000000..4cb41cf29d71da547c9302617e39f8a3fc96525d --- /dev/null +++ b/tools/badconfigdetector/detector @@ -0,0 +1,262 @@ +#!/usr/bin/perl -w +# detector - find combinations of configs that are dangerous +# taggart 2012-10-26 + +use Getopt::Std; +$Getopt::Std::STANDARD_HELP_VERSION='true'; + +use vars qw($opt_c $opt_w $opt_s $opt_d $small $smalllim $medium $mediumlim $large $largelim $debug $date); +# want to have warning and critical levels eventually + +getopts('cswd'); + +sub HELP_MESSAGE { + print "Usage: detector\n"; + print " -c : only show critical problems\n"; + print " -s : only show summary report, rather than list names\n"; + print " -w : use redcloth/greencloth wiki output\n"; + print " -d : dump a list of the rules\n"; +} + +# enable debug to use local test data +#$debug='true'; + +$date=`date`; +chomp($date); + +if ( $debug ) { + $listdir='./expl'; +} else { + $listdir='/home/sympa/expl'; +} + +# definition of sizes +$smalllim=500; +$mediumlim=1000; +$largelim=2000; + + +# The checks: array of hashs, description of test is key, array is severity of test, test condition +%checks = ( + # only up to 'small' lists should allow unrestricted sending + 'send anyone_unmoderated and medium' => [ 'critical', sub { $d{send} eq 'anyone_unmoderated' && $medium } ], + 'send anyone_unmoderated_verified and medium' => [ 'critical', sub { $d{send} eq 'anyone_unmoderated_verified' && $medium } ], + # lists that allow members to post after moderation aren't as risky as unrestricted, but still a concern (size dependent) + 'send members_moderated and huge' => [ 'critical', sub { $d{send} eq 'members_moderated' && $huge } ], + 'send members_moderated and large' => [ 'warning', sub { $d{send} eq 'members_moderated' && $large } ], + 'send members_moderated_verified and huge' => [ 'critical', sub { $d{send} eq 'members_moderated_verified' && $huge } ], + 'send members_moderated_verified and large' => [ 'warning', sub { $d{send} eq 'members_moderated_verified' && $large } ], + # lists that allow members to post unmoderated and anyone to post after moderation are riskier still + 'send members_or_verified and large' => [ 'critical', sub { $d{send} eq 'members_or_verified' && $large } ], + 'send members_or_verified and medium' => [ 'warning', sub { $d{send} eq 'members_or_verified' && $medium } ], + 'send editors_or_moderated and large' => [ 'critical', sub { $d{send} eq 'editors_or_moderated' && $large } ], + 'send editors_or_moderated and medium' => [ 'warning', sub { $d{send} eq 'editors_or_moderated' && $medium } ], + 'send editors_or_moderated_quiet and large' => [ 'critical', sub { $d{send} eq 'editors_or_moderated_quiet' && $large } ], + 'send editors_or_moderated_quiet and medium' => [ 'warning', sub { $d{send} eq 'editors_or_moderated_quiet' && $medium } ], + 'send anyone_moderated and large' => [ 'critical', sub { $d{send} eq 'anyone_moderated' && $large } ], + 'send anyone_moderated and medium' => [ 'warning', sub { $d{send} eq 'anyone_moderated' && $medium } ], + 'send anyone_moderated_verified and large' => [ 'critical', sub { $d{send} eq 'anyone_moderated_verified' && $large } ], + 'send anyone_moderated_verified and medium' => [ 'warning', sub { $d{send} eq 'anyone_moderated_verified' && $medium } ], + 'send members_unmoderated and large' => [ 'critical', sub { $d{send} eq 'members_unmoderated' && $large } ], + 'send members_unmoderated and medium' => [ 'warning', sub { $d{send} eq 'members_unmoderated' && $medium } ], + 'send members_unmoderated_verified and large' => [ 'critical', sub { $d{send} eq 'members_unmoderated_verified' && $large } ], + 'send members_unmoderated_verified and medium' => [ 'warning', sub { $d{send} eq 'members_unmoderated_verified' && $medium } ], + 'send members_or_moderated and large' => [ 'critical', sub { $d{send} eq 'members_or_moderated' && $large } ], + 'send members_or_moderated and medium' => [ 'warning', sub { $d{send} eq 'members_or_moderated' && $medium } ], + 'send members_or_moderated_quiet and large' => [ 'critical', sub { $d{send} eq 'members_or_moderated_quiet' && $large } ], + 'send members_or_moderated_quiet and medium' => [ 'warning', sub { $d{send} eq 'members_or_moderated_quiet' && $medium } ], + 'send default (members_or_moderated) and large'=> [ 'critical', sub { ! $d{send} && $large } ], + 'send default (members_or_moderated) and medium'=> [ 'warning', sub { ! $d{send} && $medium } ], + 'send members_verified and large' => [ 'critical', sub { $d{send} eq 'members_verified' && $large } ], + 'send members_verified and medium' => [ 'warning', sub { $d{send} eq 'members_verified' && $medium } ], + # send editors_moderated/editors_unmoderated are fine for any size + + # only up to medium lists should allow members to review subscriber list + 'review members and large' => [ 'critical', sub { $d{review} eq 'members' && $large } ], + 'review members and medium' => [ 'warning', sub { $d{review} eq 'members' && $medium } ], + + # security through obscurity + 'member list is restricted but archive is open' => [ 'minor', sub { $d{visibility} eq 'members' && $d{'web_archive\naccess'} eq 'anyone' } ], + 'list info is restricted but archive is open' => [ 'minor', sub { $d{info} eq 'members' && $d{'web_archive\naccess'} eq 'anyone' } ], + 'list info is restricted but docs are readable' => [ 'minor', sub { $d{info} eq 'members' && $d{d_read} eq 'anyone' } ], + + # list is not visible/info but anyone can invite + 'member list is restricted but anyone can invite' => [ 'minor', sub { $d{visibility} eq 'members' && $d{invite} eq 'anyone' } ], + 'list info is restricted but anyone can invite' => [ 'minor', sub { $d{info} eq 'members' && $d{invite} eq 'anyone' } ], + + # many cases that sympa has by default we don't just because we delete some + # scenari because they are always bad, for example unsubscribe.closed +); + +=for comment +=cut + +# if -d is set, just dump the list of checks in a nice format +if ( $opt_d ) { + print "small <= $smalllim, medium <= $mediumlim, large <= $largelim, huge > $largelim\n"; + print "(this table generated by 'detector -d -w')\n\n"; + if ( $opt_w ) { + print "|_.Description|_.Severity|_.Test Code|\n"; + } + + use B::Deparse (); + + foreach $desc ( sort keys %checks ) { + my $deparse = B::Deparse->new; + $code = $deparse->coderef2text($checks{$desc}[1]); + # strip parens, whitespace, newlines + $code =~ s/{\n (.*);\n}/$1/; + if ( $opt_w ) { + print "|", $desc, "|"; + if ( "$checks{$desc}[0]" eq 'critical' ) { + print "{color:red}."; + } elsif ( "$checks{$desc}[0]" eq 'warning' ) { + print "{color:orange}."; + } elsif ( "$checks{$desc}[0]" eq 'minor' ) { + print "{color:yellow}."; + } + print $checks{$desc}[0], "|", $code, "|\n"; + } else { + print "### description: '$desc' severity: ",$checks{$desc}[0], " test: '$code' ###\n"; + } + } + exit 0; +} + +# these are the things we want to grab from the config, if you add new checks +# that use things other than these, add them to the list +my @fields = ( 'size', 'send', 'review', 'visibility', 'info', 'web_archive\naccess', 'd_read', 'invite'); + + +# sql to get +if ( $debug ) { + $sql=qq(cat testlists); +} else { + $sql=qq(mysql --batch --database=sympa --skip-column-names --execute "SELECT subscriber_table.list_subscriber AS listname, count(subscriber_table.list_subscriber) AS subscribers FROM subscriber_table, list_table where subscriber_table.list_subscriber=list_table.name_list and list_table.status_list='open' GROUP BY subscriber_table.list_subscriber;"); +} + +open(LISTS, "$sql|") or die "cannot get subscriber counts from database\n"; + +while (<LISTS>) { + ($list, $count) = split /\t/; + + #print "list:$list count:$count\n"; + + # size + if ( $count <= $smalllim ) { + $small = 1; + } elsif ( $count <= $mediumlim ) { + $medium = 1; + } elsif ( $count <= $largelim ) { + $large = 1; + } else { + $huge = 1; + } + + $config = "$listdir/$list/config"; + + # grab the list's config + local $/ = undef; + open(OLD,"$config") || die "ERROR: cannot open $config\n"; + $config_text = <OLD>; + close OLD; + + # extract the fields + foreach $key ( @fields ) { + #print "$key\n"; + if ($config_text =~ /\n$key (.+?)\n/) { + # found $key, store it + #print "list is $list, key is $key, val is $1\n"; + $d{$key}=$1; + } + } + + # do the checks + foreach $desc ( keys %checks ) { + $test=$checks{$desc}[1]; + if ( $test->() ) { + #print "$desc was true\n"; + push @{ $results{$desc} }, $list; + } + } +} + +if ( $opt_w ) { + print "small <= $smalllim, medium <= $mediumlim, large <= $largelim, huge > $largelim\n\n"; + print "|_.Test Description|_.Severity|_.# of Lists|\n"; +} + +# now display the results +foreach $desc ( keys %results ) { + # if we're only looking for critical and it's not critical, skip + next if ( "$checks{$desc}[0]" ne 'critical' && $opt_c ); + if ( $opt_w ) { + print "|", $desc, "|"; + if ( "$checks{$desc}[0]" eq 'critical' ) { + print "{color:red}."; + } elsif ( "$checks{$desc}[0]" eq 'warning' ) { + print "{color:orange}."; + } elsif ( "$checks{$desc}[0]" eq 'minor' ) { + print "{color:yellow}."; + } + print $checks{$desc}[0], "|", $#{ $results{$desc} }, "|\n"; + } else { + print "### test: '$desc' severity: ",$checks{$desc}[0], " lists: ", $#{ $results{$desc} }, " ###\n"; + } + + if ( $opt_s ) { + foreach ( @{ $results{$desc} } ) { + print "$_\n"; + } + } +} + +exit 0; + + + +format Wiki = +|[@*->https://lists.riseup.net/www/info/@*]|@*| + $list, $list,$counts{$list} +. + +format Plain = +@* @* +$list, $counts{$list} +. + +format Html = +<tr><td><a href="https://lists.riseup.net/www/info/@*">@*</a></td><td align=right>@*</td></tr> + $list, $list, $counts{$list} +. + +format Pcre = +/@@*@lists\.riseup\.net$/ [10.0.1.44] +"^", $list, "@" +. + +if ( $ARGV[0] eq '-w' ) { + $~='Wiki'; + print "h3. Top $num lists by size\n\n"; + print "(generated ".$date.")\n\n"; + print "|_.List name|_.Subscribers|\n"; +} elsif ($ARGV[0] eq '-h' ) { + $~='Html'; + print "<style>table.single{border: 1px solid;border-collapse: collapse;}\n.single td, .single th{border-width: 1px 1px 1px 1px;border-style: solid;}\n</style>\n"; + print "<h3>Top $num lists by size</h3>\n"; + print "(<i>generated ".$date."</i>)\n"; + print "<table class=\"single\">\n"; + print "<tr><th align=center>List name</th><th align=center>Subscribers</th></tr>\n"; +} elsif ($ARGV[0] eq '-r' ) { + $~='Pcre'; +} else { + $~='Plain'; + print "Top $num lists by size\n"; + print "(generated ".$date.")\n"; +} + + + +if ($ARGV[0] eq '-h' ) { + print "</table>\n"; +} diff --git a/tools/badconfigdetector/expl/list1/config b/tools/badconfigdetector/expl/list1/config new file mode 100644 index 0000000000000000000000000000000000000000..423967fcedde693f0885c8361fd95f8f813cc373 --- /dev/null +++ b/tools/badconfigdetector/expl/list1/config @@ -0,0 +1,103 @@ +## +## private working group +## + +visibility members + +reply_to_header +apply forced +value list + +web_archive +access anyone + +lang es_ES + +pictures_feature on + +subscribe closed + +subject List to test sympa features + +serial 30 + +clean_delay_queuemod 15 + +editor +reception mail +email taggart@riseup.net +visibility noconceal + +editor +reception mail +email bissej@riseup.net +visibility noconceal + +editor +reception mail +email matt@lackof.org +visibility noconceal + +info anyone + +del verified + +unsubscribe anyone_notify + +update +email taggart@riseup.net +date 16 Nov 2012 at 01:43:50 +date_epoch 1353059030 + +creation +email taggart@riseup.net +date 04 Mar 2010 at 01:08:18 +date_epoch 1267693698 + +priority 5 + +invite owner + +review owners + +send members_or_moderated + +add verified + +status open + +remind listmaster + +available_user_options +reception digest,digestplain,html,mail,nomail,not_me,notice,summary,txt,urlize + +rfc2369_header_fields archive,help,owner,post,subscribe,unsubscribe + +owner +reception mail +profile privileged +email taggart@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email bissej@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email matt@lackof.org +visibility noconceal + +archive +period week +access owner + +verp_rate 100% + +digest 5 20:56 + +custom_subject taggart-test + diff --git a/tools/badconfigdetector/expl/list2/config b/tools/badconfigdetector/expl/list2/config new file mode 100644 index 0000000000000000000000000000000000000000..22c386de609670a1c0dd160adc9391931f524716 --- /dev/null +++ b/tools/badconfigdetector/expl/list2/config @@ -0,0 +1,103 @@ +## +## private working group +## + +visibility members + +reply_to_header +apply forced +value list + +web_archive +access members + +lang es_ES + +pictures_feature on + +subscribe closed + +subject List to test sympa features + +serial 30 + +clean_delay_queuemod 15 + +editor +reception mail +email taggart@riseup.net +visibility noconceal + +editor +reception mail +email bissej@riseup.net +visibility noconceal + +editor +reception mail +email matt@lackof.org +visibility noconceal + +info anyone + +del verified + +unsubscribe anyone_notify + +update +email taggart@riseup.net +date 16 Nov 2012 at 01:43:50 +date_epoch 1353059030 + +creation +email taggart@riseup.net +date 04 Mar 2010 at 01:08:18 +date_epoch 1267693698 + +priority 5 + +invite anyone + +review owners + +send members_or_moderated + +add verified + +status open + +remind listmaster + +available_user_options +reception digest,digestplain,html,mail,nomail,not_me,notice,summary,txt,urlize + +rfc2369_header_fields archive,help,owner,post,subscribe,unsubscribe + +owner +reception mail +profile privileged +email taggart@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email bissej@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email matt@lackof.org +visibility noconceal + +archive +period week +access owner + +verp_rate 100% + +digest 5 20:56 + +custom_subject taggart-test + diff --git a/tools/badconfigdetector/expl/list3/config b/tools/badconfigdetector/expl/list3/config new file mode 100644 index 0000000000000000000000000000000000000000..22c386de609670a1c0dd160adc9391931f524716 --- /dev/null +++ b/tools/badconfigdetector/expl/list3/config @@ -0,0 +1,103 @@ +## +## private working group +## + +visibility members + +reply_to_header +apply forced +value list + +web_archive +access members + +lang es_ES + +pictures_feature on + +subscribe closed + +subject List to test sympa features + +serial 30 + +clean_delay_queuemod 15 + +editor +reception mail +email taggart@riseup.net +visibility noconceal + +editor +reception mail +email bissej@riseup.net +visibility noconceal + +editor +reception mail +email matt@lackof.org +visibility noconceal + +info anyone + +del verified + +unsubscribe anyone_notify + +update +email taggart@riseup.net +date 16 Nov 2012 at 01:43:50 +date_epoch 1353059030 + +creation +email taggart@riseup.net +date 04 Mar 2010 at 01:08:18 +date_epoch 1267693698 + +priority 5 + +invite anyone + +review owners + +send members_or_moderated + +add verified + +status open + +remind listmaster + +available_user_options +reception digest,digestplain,html,mail,nomail,not_me,notice,summary,txt,urlize + +rfc2369_header_fields archive,help,owner,post,subscribe,unsubscribe + +owner +reception mail +profile privileged +email taggart@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email bissej@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email matt@lackof.org +visibility noconceal + +archive +period week +access owner + +verp_rate 100% + +digest 5 20:56 + +custom_subject taggart-test + diff --git a/tools/badconfigdetector/expl/list4/config b/tools/badconfigdetector/expl/list4/config new file mode 100644 index 0000000000000000000000000000000000000000..22c386de609670a1c0dd160adc9391931f524716 --- /dev/null +++ b/tools/badconfigdetector/expl/list4/config @@ -0,0 +1,103 @@ +## +## private working group +## + +visibility members + +reply_to_header +apply forced +value list + +web_archive +access members + +lang es_ES + +pictures_feature on + +subscribe closed + +subject List to test sympa features + +serial 30 + +clean_delay_queuemod 15 + +editor +reception mail +email taggart@riseup.net +visibility noconceal + +editor +reception mail +email bissej@riseup.net +visibility noconceal + +editor +reception mail +email matt@lackof.org +visibility noconceal + +info anyone + +del verified + +unsubscribe anyone_notify + +update +email taggart@riseup.net +date 16 Nov 2012 at 01:43:50 +date_epoch 1353059030 + +creation +email taggart@riseup.net +date 04 Mar 2010 at 01:08:18 +date_epoch 1267693698 + +priority 5 + +invite anyone + +review owners + +send members_or_moderated + +add verified + +status open + +remind listmaster + +available_user_options +reception digest,digestplain,html,mail,nomail,not_me,notice,summary,txt,urlize + +rfc2369_header_fields archive,help,owner,post,subscribe,unsubscribe + +owner +reception mail +profile privileged +email taggart@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email bissej@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email matt@lackof.org +visibility noconceal + +archive +period week +access owner + +verp_rate 100% + +digest 5 20:56 + +custom_subject taggart-test + diff --git a/tools/badconfigdetector/expl/list5/config b/tools/badconfigdetector/expl/list5/config new file mode 100644 index 0000000000000000000000000000000000000000..22c386de609670a1c0dd160adc9391931f524716 --- /dev/null +++ b/tools/badconfigdetector/expl/list5/config @@ -0,0 +1,103 @@ +## +## private working group +## + +visibility members + +reply_to_header +apply forced +value list + +web_archive +access members + +lang es_ES + +pictures_feature on + +subscribe closed + +subject List to test sympa features + +serial 30 + +clean_delay_queuemod 15 + +editor +reception mail +email taggart@riseup.net +visibility noconceal + +editor +reception mail +email bissej@riseup.net +visibility noconceal + +editor +reception mail +email matt@lackof.org +visibility noconceal + +info anyone + +del verified + +unsubscribe anyone_notify + +update +email taggart@riseup.net +date 16 Nov 2012 at 01:43:50 +date_epoch 1353059030 + +creation +email taggart@riseup.net +date 04 Mar 2010 at 01:08:18 +date_epoch 1267693698 + +priority 5 + +invite anyone + +review owners + +send members_or_moderated + +add verified + +status open + +remind listmaster + +available_user_options +reception digest,digestplain,html,mail,nomail,not_me,notice,summary,txt,urlize + +rfc2369_header_fields archive,help,owner,post,subscribe,unsubscribe + +owner +reception mail +profile privileged +email taggart@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email bissej@riseup.net +visibility noconceal + +owner +reception mail +profile normal +email matt@lackof.org +visibility noconceal + +archive +period week +access owner + +verp_rate 100% + +digest 5 20:56 + +custom_subject taggart-test + diff --git a/tools/badconfigdetector/testlists b/tools/badconfigdetector/testlists new file mode 100644 index 0000000000000000000000000000000000000000..dbd0661be1fe1cfb80bf2b159040d87969682064 --- /dev/null +++ b/tools/badconfigdetector/testlists @@ -0,0 +1,5 @@ +list1 590 +list2 1023 +list3 23 +list4 5096 +list5 12345 diff --git a/tools/biglists b/tools/biglists new file mode 100755 index 0000000000000000000000000000000000000000..4be251a926c4b13e4e5d3dd1364af0e618723b4a --- /dev/null +++ b/tools/biglists @@ -0,0 +1,43 @@ +#!/usr/bin/perl -w +# biglists - find and report lists over a certain size +# only outputs if there is something to report so you can run it via cron +# Matt Taggart <taggart@riseup.net> +# NOTE: this script requires the current user has read access to the db +# it does not need to run on the lists machine + +$size='5000'; +$logdir='/var/log/sympa/biglists'; + +if ( ! -d $logdir || ! -w $logdir ) { + die "biglists: ERROR problem writing to $logdir"; +} + +# FIXME: too lazy to use localtime +$newname=`date +%Y-week%V-day%u`; +chomp $newname; +$file="$logdir/$newname"; + +# we compare with the most recent output +$oldname=`ls -rt $logdir/|tail -1`; +chomp $oldname; +$oldfile="$logdir/$oldname"; + +$sql="SELECT subscriber_table.list_subscriber AS listname FROM subscriber_table, list_table where subscriber_table.list_subscriber=list_table.name_list and list_table.status_list='open' GROUP BY listname HAVING count(subscriber_table.list_subscriber) > $size ORDER BY listname"; + +# apparently the ORDER BY isn't the same as sort order, so we have to sort too +`mysql --batch --database=sympa --skip-column-names --execute "$sql" |sort > $file`; + +# I considered using List::Compare, but that adds an extra dependency and +# comm is in coreutils which is on all systems +$old=`comm -23 $oldfile $file`; +$new=`comm -13 $oldfile $file`; + +if ( $old ) { + print "#### The following lists no longer have more than $size members ####\n"; + print $old; +} + +if ( $new ) { + print "#### The following lists now have more than $size members ####\n"; + print $new; +} diff --git a/tools/changescenari b/tools/changescenari new file mode 100755 index 0000000000000000000000000000000000000000..5cfe882e0bb69814ebb7b4aeee9e96451b36ba8f --- /dev/null +++ b/tools/changescenari @@ -0,0 +1,160 @@ +#!/usr/bin/perl -w +# changescenari - do a search and replace on every config file. +# edit the $listdir and $replacesments to configure +# originally by elijah in php4 +# rewritten in perl by taggart 2012-02 + +use Getopt::Std; +$Getopt::Std::STANDARD_HELP_VERSION="true"; + +use vars qw($opt_d); +use vars qw($opt_l); + +getopts('dl:'); + +sub HELP_MESSAGE { + print "Usage: changescenari [-d] [-l <listname>]\n"; + print " -d : actually change things\n"; + print " -l : specify list to change\n"; + print "BE CAREFUL! Run without -d and review what it will do first!\n"; +} + +my $listdir='/home/sympa/expl/'; +my $tmpdir='/home/sympa/tmp'; + +# create hash of replacements +%replacements = ( +# below are DONE + 'send newsletter_verify' => 'send editors_moderated', + 'send newsletter_verify_others' => 'send editors_moderated', + 'send newsletter' => 'send editors_unmoderated', + 'send newsletterkeyonly' => 'send editors_moderated', + 'send editorkey' => 'send editors_or_moderated', + 'send editorkeyonly' => 'send anyone_moderated', + 'send editorkeyonlyauth' => 'send anyone_moderated_verified', + 'send private' => 'send members_unmoderated', + 'send privatekey' => 'send members_unmoderated_verified', + 'send privateorpublickey' => 'send members_or_verified', + 'send privateandeditorkey' => 'send members_moderated', + 'send privatekeyandeditorkeyonly' => 'send members_moderated_verified', + 'send privateoreditorkey' => 'send members_or_moderated', + 'send public' => 'send anyone_unmoderated', + 'send publickey' => 'send anyone_unmoderated_verified', + 'send intranet' => 'send members_unmoderated', + 'send intranetorprivate' => 'send members_unmoderated', + 'send privateandnomultipartoreditorkey' => 'send members_moderated', + 'send private_smime' => 'send members_moderated', + 'send publicnoattachment' => 'send members_unmoderated', + 'send public_nobcc' => 'send members_unmoderated', + 'send publicnomultipart' => 'send members_moderated', + 'review owner' => 'review owners', + 'review private' => 'review members', + 'review intranet' => 'review owners', + 'review public' => 'review members', + '\nvisibility conceal' => "\nvisibility members", + '\nvisibility noconceal' => "\nvisibility anyone", + '\nvisibility secret' => "\nvisibility members", + '\nvisibility intranet' => "\nvisibility members", + 'info open' => 'info anyone', + 'info private' => 'info members', + #'access public' => 'access anyone', + #'access private' => 'access members', + #'access owner' => 'access owners', + 'd_read owner' => 'd_read owners', + 'd_read public' => 'd_read anyone', + 'd_read private' => 'd_read members', + 'd_read private-https' => 'd_read members', + 'd_edit editor' => 'd_edit editors', + 'd_edit owner' => 'd_edit owners', + 'd_edit public' => 'd_edit members', + 'd_edit private' => 'd_edit members', + 'd_edit private-https' => 'd_edit members', + 'del auth' => 'del verified', + 'del owner' => 'del verified', + 'del owner_notify' => 'del verified_notify', + 'add auth' => 'add verified', + 'add owner' => 'add verified', + 'add owner_notify' => 'add verified_notify', + 'invite default' => 'invite closed', + 'invite public' => 'invite anyone', + 'invite owner' => 'invite owners', + 'invite private' => 'invite members', + 'invite impossible' => 'invite closed', + 'subscribe open' => 'subscribe verified', + 'subscribe open_notify' => 'subscribe verified_notify', + 'subscribe open_quiet' => 'subscribe verified', + 'subscribe auth' => 'subscribe verified', + 'subscribe auth_notify' => 'subscribe verified_notify', + 'subscribe auth_owner' => 'subscribe verified_approved', + 'subscribe approved' => 'subscribe verified_approved', + 'subscribe approved_verified' => 'subscribe verified_approved', + 'subscribe intranet' => 'subscribe verified', + 'subscribe intranetorowner' => 'subscribe verified_approved', + 'subscribe anyone_notify' => 'subscribe verified_notify', + 'subscribe impossible' => 'subscribe closed', + 'subscribe smime' => 'subscribe verified', + 'subscribe smimeorowner' => 'subscribe verified_approved', + 'subscribe owner' => 'subscribe verified_approved', + 'unsubscribe open' => 'unsubscribe anyone', + 'unsubscribe open_notify' => 'unsubscribe anyone_notify', + 'unsubscribe notify' => 'unsubscribe anyone_notify', + 'unsubscribe auth' => 'unsubscribe verified', + 'unsubscribe auth_notify' => 'unsubscribe verified_notify' +); + +if ($opt_l) { + @configs = ("$listdir/$opt_l/config"); +}else { + # get list of configs + $output=qx(find $listdir -name config); + + @configs = split /\n/,$output; +} + +foreach $config (@configs) { + + $list=$config; + $list =~ s:^.*/(.*?)/config:$1:; + + local $/ = undef; + open(OLD,"$config") || die "ERROR: cannot open $config\n"; + $config_text = <OLD>; + close OLD; + + # we're not going to make a new version until we have a reason to + $newversion = 0; + + foreach $line (keys %replacements) { + if ($config_text =~ /\n$line\n/) { + print "NOTE: found '$line' in $list\n"; + print " replacing with '$replacements{$line}'\n"; + # we're creating a new config file + $newversion = 1; + $config_text =~ s/\n$line\n/\n$replacements{$line}\n/; + } + } + + # only do it if the user specified -d + if ($opt_d) { + if ($newversion) { + # write the new version to a temp file + die "ERROR: $config.new exists!\n" if ( -e "$config.new" ); + open(NEW,">$config.new") || die "ERROR: cannot open $config.new\n"; + print NEW $config_text; + close NEW; + # move it in place + rename "$config.new", $config || die "ERROR: cannot move $config.new into place\n"; + # tell sympa to update the config.bin for the list + #qx(/home/sympa/bin/sympa.pl --reload_list_config --list=$list@lists.riseup.net) + } + } +} + +if (! $opt_d and $newversion) { + print "WARNING: didn't actually make any changes. Review the above and when you\n"; + print " are ready to run for real add the -d flag\n"; +} + +# changing scenari shouldn't update anything in the list table, but if you +# need to sync use this +#/home/sympa/bin/sympa.pl --sync_list_db diff --git a/tools/checkbanned.pl b/tools/checkbanned.pl new file mode 100755 index 0000000000000000000000000000000000000000..8651f4dd9b37c0527b2d3f90f727263b84cd7dbb --- /dev/null +++ b/tools/checkbanned.pl @@ -0,0 +1,97 @@ +#!/usr/bin/perl -w +# checkbanned.pl - script to check sympa database for banned users +# Matt Taggart <taggart@riseup.net> 2011-09 + +use strict; +use Getopt::Std; +$Getopt::Std::STANDARD_HELP_VERSION="true"; + +use vars qw($data $VERBOSE $opt_q + $userfile $adminfile $listfile + @userregex @adminregex @listregex + @users @admins @lists + $usersql $adminsql $listsql ); + +$data='/home/sympa/etc/banned'; +$userfile="$data/users"; +$adminfile="$data/admins"; +$listfile="$data/lists"; +# by default we print nice headers for the user +$VERBOSE='true'; + +getopts('q'); + +sub HELP_MESSAGE { + print "Usage: checkbanned.pl [-q]\n"; + print " -q : quiet mode, don't print headers. useful for cronjobs or nagios\n"; +} + +if ($opt_q) { + undef $VERBOSE; +} + +if ( -r $userfile ) { + # load the regexs, removing comment lines + @userregex = grep(!/^#/, &loadarray("$userfile")); + + # load the list of user + $usersql='mysql -N --batch --database=sympa --execute "select email_user from user_table"'; + @users = &loadarray("$usersql|"); + + print "#### processing users ####\n" if $VERBOSE; + foreach (@users) { + my $regex; + foreach $regex (@userregex) { + print "pattern '$regex' matched user '$_'\n" if m/$regex/; + } + } +} + +if ( -r $adminfile ) { + # load the regexs, removing comment lines + @adminregex = grep(!/^#/, &loadarray("$adminfile")); + + # load the list of admin/list pairs + $adminsql=q(mysql -N --batch --database=sympa --execute "select user_admin, list_admin from admin_table, list_table where list_admin=list_table.name_list and list_table.status_list != 'closed'"); + @admins = &loadarray("$adminsql|"); + + print "#### processing admins ####\n" if $VERBOSE; + foreach (@admins) { + my ($address, $list) = split /\t/,$_; + $_ = $address; + my $regex; + foreach $regex (@adminregex) { + print "pattern '$regex' matched admin '$address' of list '$list'\n" if m/$regex/; + } + } +} +if ( -r $listfile ) { + # load the regexs, removing comment lines + @listregex = grep(!/^#/, &loadarray("$listfile")); + + # load the list of lists + $listsql=q(mysql -N --batch --database=sympa --execute "select name_list from list_table where status_list != 'closed'"); + @lists = &loadarray("$listsql|"); + + print "#### processing lists ####\n" if $VERBOSE; + foreach (@lists) { + my $regex; + foreach $regex (@listregex) { + print "pattern '$regex' matched list '$_'\n" if m/$regex/; + } + } +} + +# loads a file into an array +sub loadarray { + my $file = shift(@_); + my @regexs; + open(FILE,"$file") or die "cannot open $file\n"; + while (<FILE>) { + chomp; + push @regexs,$_; + } + close(FILE); + return @regexs; +} + diff --git a/tools/checkdaemons b/tools/checkdaemons new file mode 100755 index 0000000000000000000000000000000000000000..97f2285584465951113f65ef67e3801c71cb011b --- /dev/null +++ b/tools/checkdaemons @@ -0,0 +1,11 @@ +#!/bin/sh + +# +# ensure that sympa daemons are actually running! +# this should be run as root +# + +if [[ `pgrep sympa.pl` && `pgrep archived.pl` && `pgrep bounced.pl` && `pgrep task_manager.pl` ]] + then true + else /etc/init.d/sympa start +fi diff --git a/tools/cleanspool b/tools/cleanspool new file mode 100755 index 0000000000000000000000000000000000000000..c2f3423075a3771f5e470c6b3be9bf2c539b4257 --- /dev/null +++ b/tools/cleanspool @@ -0,0 +1,19 @@ +#!/bin/sh + +# +# removes messages from the spool for lists which do not exist. +# + +cd /home/sympa/spool/msg +for i in `tail -100 /var/log/sympa/sympa.log | grep "No such list" | awk '{print $9}' | sort -u` +do + for j in `ls -1 $i@lists* 2> /dev/null`; do + mv -v $j ./bad/ + done + for j in `ls -1 $i-subscribe@lists* 2> /dev/null`; do + mv -v $j ./bad/ + done + for j in `ls -1 $i-unsubscribe@lists* 2> /dev/null`; do + mv -v $j ./bad/ + done +done diff --git a/tools/common b/tools/common new file mode 100755 index 0000000000000000000000000000000000000000..9f8a24426bb47d99c1a3649a19395111387888e3 --- /dev/null +++ b/tools/common @@ -0,0 +1,6 @@ +#!/bin/sh + +export DB_USER=`grep "^db_user" /etc/sympa/sympa.conf | cut -f2` +export DB_NAME=`grep "^db_name" /etc/sympa/sympa.conf | cut -f2` +export DB_PASS=`grep "^db_pass" /etc/sympa/sympa.conf | cut -f2` + diff --git a/tools/configfixin/iconv_configs.rb b/tools/configfixin/iconv_configs.rb new file mode 100755 index 0000000000000000000000000000000000000000..2e9b5fbf446924bd80a3338482815faae0619421 --- /dev/null +++ b/tools/configfixin/iconv_configs.rb @@ -0,0 +1,25 @@ +#!/usr/bin/ruby + +require "lib/replace_config" +require 'iconv' + +# we don't know if string is already unicode, or something else +def convert_string_to_utf8(string) + begin + # string is probably already unicode if it parses at UTF-8 + Iconv.iconv('UTF-8', 'UTF-8', string) + return false + rescue + # try ISO-8859-15, then give up. + begin + return Iconv.iconv( 'UTF-8', 'ISO-8859-15', string ) + rescue + return false + end + end + return false +end + +replace_config do |list,config| + convert_string_to_utf8(config) +end diff --git a/tools/configfixin/iconv_info.rb b/tools/configfixin/iconv_info.rb new file mode 100755 index 0000000000000000000000000000000000000000..713a86c239089dfcfd07cca5832b329c8941c5eb --- /dev/null +++ b/tools/configfixin/iconv_info.rb @@ -0,0 +1,31 @@ +#!/usr/bin/ruby + +require "lib/replace_config" +require 'iconv' + +# we don't know if string is already unicode, or something else +def convert_string_to_utf8(string) + begin + # string is probably already unicode if it parses at UTF-8 + Iconv.iconv('UTF-8', 'UTF-8', string) + return false + rescue + # try ISO-8859-15, then give up. + begin + return Iconv.iconv( 'UTF-8', 'ISO-8859-15', string ) + rescue + return false + end + end + return false +end + + +replace_info do |list,info| + convert_string_to_utf8(info) +end + +replace_homepage do |list,info| + convert_string_to_utf8(info) +end + diff --git a/tools/configfixin/infofix.rb b/tools/configfixin/infofix.rb new file mode 100644 index 0000000000000000000000000000000000000000..f6744a55ee8139efb44aa5dd35cb97a65af8b454 --- /dev/null +++ b/tools/configfixin/infofix.rb @@ -0,0 +1,24 @@ +#!/usr/bin/ruby +require "ftools" + +if ARGV[0].nil? or !File.directory? ARGV[0] + printf "Usage:\n%s /path/to/sympa/expl\n", $0 + exit 1 +end + +expl = ARGV[0] +Dir.chdir(expl) +Dir.foreach expl do |list| + if list !~ /^\./ and File.directory? list + config_file_name = list + '/config' + config_file = IO.read(config_file_name) if File.exist? config_file_name + if config_file =~ /^info.anyone$/ + puts list + ' has info.open. changing to info anyone' + File.copy(config_file_name, config_file_name + '.bak') + config_file.sub!(/info.anyone/, "info anyone") + File.open(config_file_name, "w") do |file| + file.puts config_file + end + end + end +end diff --git a/tools/configfixin/lib/replace_config.rb b/tools/configfixin/lib/replace_config.rb new file mode 100755 index 0000000000000000000000000000000000000000..1138108d09fdd304cc959b9226c76dd4a7f66b64 --- /dev/null +++ b/tools/configfixin/lib/replace_config.rb @@ -0,0 +1,74 @@ +#!/usr/bin/ruby +require "ftools" + +if ARGV[0].nil? or !File.directory? ARGV[0] + printf "Usage:\n#{$0} /path/to/sympa/expl\n ..or.. \n#{$0} /path/to/list/dir\n" + exit 1 +end + +trap("INT") {puts '<interrupted>'; exit 0} + +def process_list_dir(list, file, *args) + debug = args.include? :debug + config_file_name = list + '/' + file + config_file = IO.read(config_file_name) if File.exist? config_file_name + new_config = yield(list, config_file) + if new_config + if debug + puts '================================================================' + puts list + puts new_config + else + File.copy(config_file_name, config_file_name + '.bak') + File.open(config_file_name, "w") do |f| + f.puts new_config + end + puts "replacing #{file} for #{list}" + end + elsif debug + puts "skipping #{list}" + end +end + +def replace_expl_file(file, *args, &block) + expl = ARGV[0] + if expl =~ /expl/ and expl !~ /expl\/?$/ and File.exists?("#{expl}/config") + # list directory was given + Dir.chdir(File.dirname(expl)) + process_list_dir(File.basename(expl), file, *args, &block) + else + Dir.chdir(expl) + puts 'loading expl dir...' + Dir.foreach expl do |list_dir| + next unless list_dir !~ /^\./ and File.directory? list_dir + process_list_dir(list_dir, file, *args, &block) + end + end +end + +def replace_config(*args, &block) + replace_expl_file('config', *args, &block) +end + +def replace_info(*args, &block) + replace_expl_file('info', *args, &block) +end + +def replace_homepage(*args, &block) + replace_expl_file('homepage', *args, &block) +end + + +################################################## +## +## EXAMPLE +## +# +# require 'replace_config' +# +# replace_config do |list,config| +# if config =~ /^info.anyone$/ +# return config.sub(/info.anyone/, "info anyone") +# end +# end +# \ No newline at end of file diff --git a/tools/configfixin/paragraphfix b/tools/configfixin/paragraphfix new file mode 100755 index 0000000000000000000000000000000000000000..c6d5e64d0afe371092b8e3c923c949ec178300a5 --- /dev/null +++ b/tools/configfixin/paragraphfix @@ -0,0 +1,128 @@ +#!/usr/bin/python + +import sys,string,glob,os +import xreadlines, re + +usage = "usage: %s <listdir>" % os.path.basename(sys.argv[0]) + +if len(sys.argv) < 2: + print usage + sys.exit(-1) + +listdir = sys.argv[1] +buf = "" +needaccess = 0 +hasaccess = 0 +needempty = 0 +hasempty = 0 +not_ok = 0 +private = 0 + +isempty = re.compile(r"^[\t \n]+$") +isaccess = re.compile(r".*access .*") +isprivate = re.compile(r".*Private Working Group *$") +web_archive_paragraph = re.compile(r"^web_archive *$") +visibility_paragraph = re.compile(r"^visibility") + +for listconfig in glob.glob(listdir + '/*' + '/config'): + + # Create a file to work with, will be later renamed as the config + # if there were changes that were made + new_config_name = "%s_tmp" % listconfig + new_config = open(new_config_name, 'w') + + + # Start stepping through the config file + for line in xreadlines.xreadlines(open(listconfig)): + buf = buf + line + + if isempty.match(line): + if needaccess == 1 and hasaccess == 0: + sys.stderr.write("Not ok1: %s \n--------\n%s---------\n" % (listconfig, buf)) + + if private == 1: + print >> new_config, "web_archive\naccess members\n" + + else: + print >> new_config, "web_archive\naccess anyone\n" + + not_ok = 1 + needempty = 1 + hasempty = 1 + + elif needempty == 1 and hasempty == 1: + pass + + else: + new_config.write(buf) + + # init for next paragraph + needmail = 0 + hasmail = 0 + needaccess = 0 + hasaccess = 0 + needempty = 0 + hasempty = 0 + buf = "" + + elif isprivate.match(line): + private = 1 + + elif needaccess == 1 and hasaccess == 1 and needempty == 1 and hasempty == 0: + sys.stderr.write("Not ok2: %s \n--------\n%s---------\n" % (listconfig, buf)) + not_ok = 1 + line = string.split(buf,'\n') + print >> new_config, "%s\n%s\n" % (line[0], line[1]) + print >> new_config, "%s\n" % line[2] + hasempty = 1 + + elif web_archive_paragraph.match(line): + if needempty == 1 and hasempty == 1: + sys.stderr.write("Not ok3: %s \n--------\n%s---------\n" % (listconfig, buf)) + not_ok = 1 + else: + needaccess = 1 # need to have an access section after web_archive + + elif visibility_paragraph.match(line): + needempty = 1 # need to have an empty line after visibility + + elif needaccess == 1 and isaccess.match(line): + hasaccess = 1 + needempty = 1 # needs to be empty after this line + + elif needempty == 1 and hasempty == 0: + sys.stderr.write("Not ok4: %s \n--------\n%s---------\n" % (listconfig, buf)) + not_ok = 1 + line = string.split(buf,'\n') + print >> new_config, "%s\n" % line[0] + print >> new_config, "%s\n" % line[1] + needempty = 0 + hasempty = 1 + buf = "" + # print "needmail: %d hasmail: %d hasaccess: %d needaccess: %d needempty: %d hasempty: %d" % (needmail,hasmail,hasaccess,needaccess,needempty,hasempty) + else: + # nothing special + pass + + if needaccess == 1 and hasaccess == 0: + sys.stderr.write("Not ok5: %s \n--------\n%s---------\n" % (listconfig, buf)) + not_ok = 1 + + else: + new_config.write(buf) + + new_config.flush() + new_config.close() + + # If there was a problem, so we need to take the corrected config file + # and put it in the right place after backing up the existing one + if not_ok: + # Backup the config file, just in case + os.system('cp %s %s_bak.paragraphfix' % (listconfig, listconfig)) + # Rename the temporary file to the perm config + os.rename(new_config_name,listconfig) + + # Everything was fine with the config file, clean up and go home + else: + os.remove(new_config_name) + \ No newline at end of file diff --git a/tools/configfixin/remove_remind.rb b/tools/configfixin/remove_remind.rb new file mode 100755 index 0000000000000000000000000000000000000000..de224a5f5af4f0bdd30f32d57dfc3746e36c560c --- /dev/null +++ b/tools/configfixin/remove_remind.rb @@ -0,0 +1,12 @@ +#!/usr/bin/ruby +require "lib/replace_config" + +replace_config do |list,config| + if config =~ /^(remind_task .*)$/ + puts "removing remind_task from #{list}" + config.sub(/^remind_task .*\n$/, "") + else + nil + end +end + diff --git a/tools/configfixin/reviewfix.rb b/tools/configfixin/reviewfix.rb new file mode 100755 index 0000000000000000000000000000000000000000..befea61404f48af0a14dc564c8c242ab4345a92d --- /dev/null +++ b/tools/configfixin/reviewfix.rb @@ -0,0 +1,12 @@ +#!/usr/bin/ruby +require "lib/replace_config" + +replace_config do |list,config| + if config =~ /^(review owner)$/ + puts "replacing 'review owner' with 'review owners' from #{list}" + config.sub(/^review owner\s*$/, "review owners") + else + nil + end +end + diff --git a/tools/configfixin/scenerifix b/tools/configfixin/scenerifix new file mode 100755 index 0000000000000000000000000000000000000000..92808cfa343a7723fd89f389d03b75a2c9cb9af4 --- /dev/null +++ b/tools/configfixin/scenerifix @@ -0,0 +1,24 @@ +#!/bin/sh + +listsdir=/home/sympa/expl/lists.riseup.net +lower='abcdefghijklmnopqrstuvwxyz' +upper='ABCDEFGHIJKLMNOPQRSTUVWXYZ' + + +for list in `find /home/sympa/expl -maxdepth 3 -type f -name config \ + | xargs egrep 'EDITORS|MEMBERS|ANYONE|IMPOSSIBLE|OWNERS|APPROVED\ + |VERIFIED|DEFAULT' | cut -d/ -f6` +do + echo "Correcting $list sceneri..." + cp $listsdir/$list/config $listsdir/$list/config_bak.scenerifix + + linenumber=`egrep -n 'EDITORS|MEMBERS|ANYONE|IMPOSSIBLE|OWNERS|APPROVED\ + |VERIFIED|DEFAULT' \ + $listsdir/$list/config_bak.scenerifix \ + |awk -F: '{print $1}'` + + cat $listsdir/$list/config_bak.scenerifix | \ + sed ''$linenumber'y/'$upper'/'$lower'/' > $listsdir/$list/config + diff $listsdir/$list/config_bak.scenerifix $listsdir/$list/config + sleep 5 +done diff --git a/tools/configfixin/subjectfix b/tools/configfixin/subjectfix new file mode 100755 index 0000000000000000000000000000000000000000..38dbfd3b8caeb33cd4686d3b8b41701dca0895a9 --- /dev/null +++ b/tools/configfixin/subjectfix @@ -0,0 +1,33 @@ +#!/bin/sh + +# Written by micah to fix lists that don't have subjects set +# sets the subject to whatever the "custom_subject" variable is +# set to in the config file. If "custom_subject" is not set then +# it sets the subject to the listname +# 07/29/03 +# upgrade by pietro to reflect new expl dir - 06/19/2007 + +listsdir=/crypt/sympa/expl/ + +for list in `find $listsdir -maxdepth 2 -type f -name config \ + | xargs grep -L "^subject" | cut -d/ -f5` +do + custom_subject=`cat $listsdir/$list/config | grep "^custom_subject" | cut -d ' ' -f 2-` + if [ -n "$custom_subject" ] + then + echo "Correcting $list:$topic" + cp $listsdir/$list/config $listsdir/$list/config_bak.subjectfix + echo "subject $custom_subject" >> $listsdir/$list/config + subject=`cat $listsdir/$list/config |grep "^subject"` + echo "Fixed subject: $subject" + echo "" + else + echo "No custom_subject set for $list, setting to listname" + cp $listsdir/$list/config $listsdir/$list/config_bak.subjectfix + echo "subject $list" >> $listsdir/$list/config + subject=`cat $listsdir/$list/config |grep "^subject"` + echo "Fixed subject: $subject" + echo "" + fi + +done diff --git a/tools/configfixin/topicfix b/tools/configfixin/topicfix new file mode 100755 index 0000000000000000000000000000000000000000..c764326fc8edfdee446eef33d2efa79931900c8f --- /dev/null +++ b/tools/configfixin/topicfix @@ -0,0 +1,19 @@ +#!/bin/sh + +# Written by micah to deal with topics having commas at the end +# 07/15/03 +# Updated by micah to deal with "Argument list too long" error - 07/27/03 + +listsdir=/crypt/sympa/expl + +for list in `find $listsdir -maxdepth 3 -type f -name config \ + | xargs egrep "topics .*,$" | cut -d/ -f6` +do + topic=`cat $listsdir/$list/config |grep topics` + echo "Correcting $list:$topic" + cp $listsdir/$list/config $listsdir/$list/config_bak.topicfix + cat $listsdir/$list/config_bak.topicfix | sed 's/,*$//' > $listsdir/$list/config + topic=`cat $listsdir/$list/config |grep topics` + echo "Fixed topic: $topic" + echo "" +done diff --git a/tools/configfixin/webarchivefix.rb b/tools/configfixin/webarchivefix.rb new file mode 100755 index 0000000000000000000000000000000000000000..5c408225730d4110a2ca3b4e0f8780b50d51d937 --- /dev/null +++ b/tools/configfixin/webarchivefix.rb @@ -0,0 +1,30 @@ +#!/usr/bin/ruby +require "ftools" + +if ARGV[0].nil? or !File.directory? ARGV[0] + printf "Usage:\n%s /path/to/list/expl\n", $0 + exit 1 +end + +expl = ARGV[0] +Dir.chdir(expl) + +Dir.foreach expl do |list| + if list !~ /^\./ and File.directory? list + config_file_name = list + '/config' + config_file = IO.read(config_file_name) if File.exist? config_file_name + if config_file =~ /^web_archive\n\n/ # the file has a web_archive line + puts list + ' has a web_archive line with no access type after it. fixing.' + File.copy(config_file_name, config_file_name + '.bak') + config_file.sub!(/^web_archive$/, "web_archive\naccess members\n") + File.open(config_file_name, "w") do |file| + file.puts config_file + end + elsif config_file !~ /^web_archive$/ # the file doesn't even have a web_archive line + puts list + ' doesn\'t have a web_archive line. fixing.' + File.open(config_file_name, "a") do |file| + file.puts "\nweb_archive\naccess members\n" # add web_archive config to the end of the file + end # with an access line after it + end + end +end diff --git a/tools/countbounces b/tools/countbounces new file mode 100755 index 0000000000000000000000000000000000000000..ab3f4ca87694a072c537c126f2b423538edf26bf --- /dev/null +++ b/tools/countbounces @@ -0,0 +1,10 @@ +#!/bin/sh +# countbounces - prints a listing of all the lists with people with a bounce +# score over 75 and the number of people over 75 for the list, +# ordered by bounce count. +# NOTE: this script requires the current user has read access to the db + +mysql --batch --database=sympa --execute \ +"SELECT count(*) as 'bounce_count', list_subscriber as 'list' \ +FROM subscriber_table WHERE bounce_subscriber <> 'NULL' AND \ +bounce_score_subscriber > 75 GROUP BY list_subscriber ORDER BY bounce_count" diff --git a/tools/countbouncesuser b/tools/countbouncesuser new file mode 100755 index 0000000000000000000000000000000000000000..b65f3a88c8a5f161645e7556481c46f13ea3b30d --- /dev/null +++ b/tools/countbouncesuser @@ -0,0 +1,9 @@ +#!/bin/sh +# countbouncesuser - prints a listing of all the users with a bounce +# score over 75 and prints bounce score, list, user; ordered by bounce score. +# NOTE: this script requires the current user has read access to the db + +mysql --batch --database=sympa --execute \ +"SELECT bounce_score_subscriber,list_subscriber,user_subscriber FROM \ +subscriber_table WHERE bounce_score_subscriber > 75 ORDER BY \ +bounce_score_subscriber" diff --git a/tools/countlang b/tools/countlang new file mode 100755 index 0000000000000000000000000000000000000000..bea3adc8fea3f1cc82a68794557638d10bfbb084 --- /dev/null +++ b/tools/countlang @@ -0,0 +1,38 @@ +#!/usr/bin/perl -w +# countlang - count the number of lists per specified language type +# WARNING this is all lists in expl/ which means open AND closed AND pending +# Matt Taggart <taggart@riseup.net> 2012-02 + +$expl='/home/sympa/expl'; + +$output=qx(egrep -h "^lang" $expl/*/config|sort |uniq -c |awk '{print \$1 " " \$3}'); +$alllists=qx(ls $expl/|wc -l); +chomp($alllists); + +@lines = split /\n/, $output; + +$total=0; + +foreach (@lines) { + m/^(.*) (.*)$/; + $langs{$2}=$1; + $total += $1; +} + +$langs{'(unspecified)'}=$alllists - $total; + +print " # % language\n"; +print "-----------------------------\n"; + +foreach $key ( sort { $langs{$b} <=> $langs{$a} } keys %langs ) { + $percent=$langs{$key} / $alllists * 100; + format foo = +@>>>> @#.## @<<<<<<<<<<<< +$langs{$key}, $percent, $key +. + $~ = 'foo'; + write; +} + +print "Total with lang specified: $total\n"; +print "Total: $alllists\n"; diff --git a/tools/countscenari b/tools/countscenari new file mode 100755 index 0000000000000000000000000000000000000000..8d9d75c14db19d9bfc34ce9d64970d4f52fb1bdf --- /dev/null +++ b/tools/countscenari @@ -0,0 +1,15 @@ +#!/bin/sh +# countscenari - given a scenari string, give a count of all the different +# values that lists are using +# Matt Taggart <taggart@riseup.net> 2011-12 + +EXPL='/home/sympa/expl/' + +if [ -z $1 ]; then + echo "usage: countscenari <string>" + exit 1 +fi + +SCENARI=$1 +# optional leading whitespace +egrep -h "^[:space:]*$SCENARI" $EXPL/*/config|sort |uniq -c|sort -n diff --git a/tools/countsendtypes b/tools/countsendtypes new file mode 100755 index 0000000000000000000000000000000000000000..ac8c4310abf072f9455db49c8d505fc1cfd52424 --- /dev/null +++ b/tools/countsendtypes @@ -0,0 +1,32 @@ +#!/usr/bin/perl -w +# countsendtypes - gives a list of the send types of all lists +# Matt Taggart <taggart@riseup.net> +# NOTE: this script requires the current user has read access to the db + +# location of your expl dir +$expl='/home/sympa/expl'; + +$sql="mysql --batch --database=sympa --skip-column-names --execute \"select name_list from list_table where status_list = 'open'\""; + +open(LISTS,"$sql|") or die "mysql command failed"; + +while (<LISTS>) { + chomp; + $list=$_; + $config="$expl/$list/config"; + if ( ! -e $config ) { + print STDERR "missing config file for $list\n"; + next; + } + $type=`grep ^send $config`; + $type =~ s/^send //; + chomp $type; + # default send type is private + if ( ! $type ) { $type = 'private' }; + $results{$type}++; +} + +# sort in reverse numerical order +foreach $key ( sort { $results{$b} <=> $results{$a} } keys %results) { + print "$results{$key} $key\n"; +} diff --git a/tools/create-admins-file b/tools/create-admins-file new file mode 100755 index 0000000000000000000000000000000000000000..edbb8fe16757f731ec6f0a662f4c17f13f16ef94 --- /dev/null +++ b/tools/create-admins-file @@ -0,0 +1,73 @@ +#!/usr/bin/php4 -q +<?php + +############################################################ +# creates a file of email addresses, one per line, of all +# list owners and editors. there are no duplicate lines. +# used to send mail to them all +############################################################ + +ini_set('error_log', NULL); +function prnt($str) {error_log($str);} + +$outfile = "/home/sympa/expl/listadmins/addresses"; +$expl = "/home/sympa/expl/"; + +$configs = `find $expl -maxdepth 3 -type f -name config | xargs egrep -l "^status open"`; +$configs = split("\n",trim($configs)); +$admins = array(); +foreach($configs as $config) { + $list = basename(dirname($config)); + prnt("$list"); + get_admins($config, $admins); +} +$admins = array_unique($admins); +write_array($admins, $outfile, false); +return; + +############################################################ + +function preg_match_file($pattern, $filename, &$matches) { + ob_start(); + readfile($filename); + $data = ob_get_contents(); + ob_end_clean(); + $status = preg_match_all($pattern,$data,$matches); + return $status; +} + +function get_admins($file, &$admins) { + $f = fopen($file,'r'); + while (!feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == 'owner' || $line == 'editor') { + while (!feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == '') + break; + elseif(preg_match("/^\s*email (.*)$/", $line,$matches)) { + $admins[] = $matches[1]; + break; + } + } + } + } +} + +function write_array($array, $filename, $writekeys=true) { + $out = fopen($filename, 'w'); + if ($out === false) die("Could not open $filename\n"); + if ($writekeys) { + foreach($array as $key => $value) { + fwrite($out, "$key $value\n"); + } + } + else { + foreach($array as $value) { + fwrite($out, "$value\n"); + } + } + fclose($out); +} + +?> diff --git a/tools/create_list_table b/tools/create_list_table new file mode 100644 index 0000000000000000000000000000000000000000..549eb2d9f6202ff9236ff3b1ba594edbaa12acc0 --- /dev/null +++ b/tools/create_list_table @@ -0,0 +1,14 @@ +CREATE TABLE `list_table` ( + `name_list` varchar(100) NOT NULL default '', + `path_list` varchar(100) NOT NULL default '', + `robot_list` varchar(100) NOT NULL default '', + `status_list` enum('open','closed','pending','error_config','family_closed') NOT NULL default 'closed', + `creation_email_list` varchar(100) NOT NULL default '', + `creation_epoch_list` datetime default NULL, + `subject_list` varchar(100) NOT NULL default '', + `web_archive_list` tinyint(1) NOT NULL default '0', + `editors` text NOT NULL, + `owners` text NOT NULL, + `topics` text NOT NULL, + PRIMARY KEY (`name_list`,`robot_list`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 diff --git a/tools/decrypt b/tools/decrypt new file mode 100755 index 0000000000000000000000000000000000000000..6ac087129f71eae9d0eae8f4e915311985a12947 --- /dev/null +++ b/tools/decrypt @@ -0,0 +1,33 @@ +#!/usr/bin/perl + +## +## command line script to convert an encrypted password to cleartext +## useful for helping users figure out why they can't login, of then they +## get their password wrong. +## usage: +## decrypt <password> +## + +require 'list.common'; +require '../bin/tools.pl'; + +my %options; +$main::options{'debug'} = 1; +$main::options{'log_level'} = 2; +$main::options{'foreground'} = 1; +$main::options{'batch'} = 0; + +#my $who, $userx; +#$who="elijah@riseup.net"; +#unless ($userx = &List::get_user_db($who)) { +# print STDOUT "failed\n"; +#} +#$userx = &List::get_user_db($who); +#print STDOUT "email: " . $userx->{'escaped_email'} . "\n"; +#print STDOUT "password: " . $userx->{'password'} . "\n"; + +my $pw = $ARGV[0]; +print STDOUT $pw . "\n"; +print STDOUT &tools::decrypt_password($pw) . "\n"; + + diff --git a/tools/disable_annoying_tasks b/tools/disable_annoying_tasks new file mode 100644 index 0000000000000000000000000000000000000000..36decff596c86abfab5f347a6bf341e46313417f --- /dev/null +++ b/tools/disable_annoying_tasks @@ -0,0 +1,35 @@ +#!/bin/sh + +cd /home/sympa/bin/etc + +if [ -d global_task_models ]; then + if [ -d global_task_models.disabled ]; then + rm -vrf global_task_models.disabled + fi + mv -v global_task_models global_task_models.disabled +fi + +if [ -d scenari ]; then + if [ -d scenari.disabled ]; then + rm -vrf scenari.disabled + fi + mv -v scenari scenari.disabled +fi + +if [ -d create_list_templates ]; then + if [ -d create_list_templates.disabled ]; then + rm -vrf create_list_templates.disabled + fi + mv -v create_list_templates create_list_templates.disabled +fi + +if [ -d list_task_models ]; then + if [ -d list_task_models.disabled ]; then + rm -vrf list_task_models.disabled + fi + mv -v list_task_models list_task_models.disabled +fi + +#cd /home/sympa/docroot/css +#rm -v style.css +#cp -v style.css.good style.css diff --git a/tools/ecology b/tools/ecology new file mode 100755 index 0000000000000000000000000000000000000000..346cf302a1a8c55493bd71c7bd8fe6a89a2b6238 --- /dev/null +++ b/tools/ecology @@ -0,0 +1,540 @@ +#!/usr/bin/php5 -q +<?php + +/***************************************************** + * + * finds lists which are 'dead' using these criteria: + * - lists which have been closed for more than $closed_age months + * - lists with no new archives for the last $dormant_age months + * + ****************************************************/ + +## +## CONFIGURATION VARIABLES +## + +$home = "/home/sympa"; +$bin = "$home/bin"; +$expl = "$home/expl"; +$arc = "$home/arc"; +$cemetary = "$home/cemetary"; +$defaultdomain = 'lists.riseup.net'; +$closed_age = 4; +$dormant_age = 18; +$config_change_age = 6; + +$closed_datafile = dirname(__FILE__) . "/data/closedlists"; +$dormant_datafile = dirname(__FILE__) . "/data/dormantlists"; +$max = 30; # how many to lists show at a time + +# the from address for the close list notice. +$from = "no-reply@riseup.net"; + +# the close list notice send to list owners +# do not put single or double quotes in this string!! +$close_msg = 'Hello, + +Your list appears to be dormant: + + $list@$domain + +It has not had any traffic for over $dormant_age months, so we have +disabled it. To save space, it will be removed in four more +months. + +If you still want the list, visit https://user.riseup.net, +create a help ticket, and ask for your list to be restored. + +You should still be able to login and download the list +archives: + +- Login at http://$domain + - Go to http://$domain/www/admin/$list + - Click Manage Archives. + +In solidarity, +the riseup collective'; + +$close_msg_to_listmaster = 'We are closing the list $list@$domain as +it appears to be dormant. + +This message is going to the listmaster as the list does not appear to have an active +administrator.'; + +$listmaster = 'listmaster@lists.riseup.net'; + +## +## CODE BEGINS HERE +## + +$argv = &$_SERVER['argv']; +$argc = &$_SERVER['argc']; + +$main = array( + 'updateclosed' => 'Closed lists: update data.', + 'autoremove' => 'Closed lists: remove all.', + 'rmclosed' => 'Closed lists: choose which to remove.', + 'updatedormant' => 'Dormant lists: update data.', + 'autodormant' => 'Dormant lists: close all.', + 'rmdormant' => 'Dormant lists: choose which to close.', + 'quit' => 'Quit' +); + +while (true) { + $action = menu($main, 'List Ecology'); + + if ($action == 'updateclosed') { + do_update_closed(); + echo "Finished. Hit return to continue\n"; + `read`; + } + elseif ($action == 'updatedormant') { + do_update_dormant(); + echo "Finished. Hit return to continue\n"; + `read`; + } + elseif ($action == 'rmclosed') { + while(true) { + $list = closed_menu($closed_datafile, $max); + list($list, $domain) = explode('@', $list); + if ($list == 'return') + break; + else { + while(true) { + $action = close_list_menu($list, $domain); + if ($action == 'return') + break; + elseif($action == 'config') { + #echo `cat $expl/$domain/$list/config`; + echo `cat $expl/$list/config`; + `read`; + continue; + } + elseif($action == 'info') { + #echo `cat $expl/$domain/$list/info`; + echo `cat $expl/$list/info`; + `read`; + continue; + } + else { + $data = read_array($closed_datafile); + unset($data["$list@$domain"]); + write_array($data, $closed_datafile); + + if ($action == 'remove') { + #`mv $expl/$domain/$list/ $cemetary/$list@$domain`; + `mv $expl/$list/ $cemetary/$list@$domain`; + `mv $arc/$list@$domain/ $cemetary/$list@$domain/arc`; + } + break; + } + } + } + } + } + elseif ($action == 'rmdormant') { + while(true) { + $list = dormant_menu($dormant_datafile, $max); + list($list, $domain) = explode('@', $list); + if ($list == 'return') + break; + else { + while(true) { + $action = dormant_list_menu($list, $domain); + if ($action == 'return') + break; + elseif($action == 'config') { + #echo `cat $expl/$domain/$list/config`; + echo `cat $expl/$list/config`; + `read`; + continue; + } + elseif($action == 'info') { + #echo `cat $expl/$domain/$list/info`; + echo `cat $expl/$list/info`; + `read`; + continue; + } + else { + close_list("$list@$domain"); + break; + } + } + } + } + } + elseif ($action == 'autodormant') { + $lists = file($dormant_datafile); + foreach ($lists as $list) { + $list=trim($list); + if (empty($list)) continue; + echo("$list: \n"); + echo(trim(`if [ -e $arc/$list ]; then ls -C $arc/$list; else echo none; fi`)); + echo("\n"); + close_list($list); + sleep(1); + } + } + elseif ($action == 'autoremove') { + $lines = file($closed_datafile); + foreach ($lines as $line) { + list($list, $time) = explode(' ',trim($line)); + list($list, $domain) = explode('@', $list); + echo("\n$list@$domain: "); + + $data = read_array($closed_datafile); + unset($data["$list@$domain"]); + write_array($data, $closed_datafile); + + #`[ -d $expl/$domain/$list/ ] && mv -v $expl/$domain/$list/ $cemetary/$list@$domain`; + `[ -d $expl/$list/ ] && mv -v $expl/$list/ $cemetary/$list@$domain`; + `[ -d $arc/$list@$domain/ ] && mv -v $arc/$list@$domain/ $cemetary/$list@$domain/arc`; + + echo("removed."); + sleep(1); + } + } + elseif ($action == 'quit') { + die("Bye\n"); + } +} + +return; + +##################################### +## MENU HANDLERS + +function closed_menu($path, $max=100) { + $data = file($path); + $data = array_slice($data, 0, $max); + foreach($data as $i) { + list($list, $time) = explode(' ',trim($i)); + $date = date("Y-m-d",$time); + $menu[$list] = "$date -- $list"; + } + asort($menu); + $menu['return'] = 'Return to main menu'; + return menu($menu, 'Closed Lists (by date closed)'); +} + +function close_list_menu($list,$domain) { + global $expl, $arc; + #echo ("List closed by: " . get_update_user("$expl/$domain/$list/config") . "\n"); + echo ("List closed by: " . get_update_user("$expl/$list/config") . "\n"); + echo "Archives: \n"; + echo(`if [ -e $arc/$list@$domain ]; then ls $arc/$list@$domain; else echo none; fi`); + $menu = array( + 'remove' => 'Remove list', + 'ok' => 'Mark as ok', + 'config' => 'Show config', + 'info' => 'Show description', + 'return' => 'Return' + ); + return menu($menu, "$list@$domain:", false); +} + +function dormant_menu($path, $max=100) { + $data = file($path); + $data = array_slice($data, 0, $max); + $menu = array(); + foreach($data as $i) { + $list = trim($i); + $menu[$list] = $list; + } + asort($menu); + $menu['return'] = 'Return to main menu'; + return menu($menu, 'Dormant Lists'); +} + +function dormant_list_menu($list,$domain) { + global $expl, $arc; + #$admins = get_admins("$expl/$domain/$list/config"); + $admins = get_admins("$expl/$list/config"); + if (count($admins)) { + echo("List admins: " . join(' ', $admins) . "\n"); + $config = true; + } + else { + echo("List admins: no configuration!\n"); + $config = false; + } + echo("Archives: "); + echo(`if [ -e $arc/$list@$domain ]; then ls -C $arc/$list@$domain; else echo none; fi`); + if ($config) { + $menu = array( + 'close' => 'Close list', + 'remove' => 'Remove archives', + 'ok' => 'Mark as ok', + 'config' => 'Show config', + 'info' => 'Show description', + 'return' => 'Return' + ); + } + else { + $menu = array( + 'remove' => 'Remove archives', + 'ok' => 'Mark as ok', + 'return' => 'Return' + ); + } + return menu($menu, "$list@$domain:", false); +} + +/******** + * + * updates the data files for old, closed, and dormant lists + * + ********/ + +function do_update_closed() { + global $expl, $closed_datafile, $closed_age, $defaultdomain; + + $old = array(); + $closed = `find $expl -follow -maxdepth 3 -type f -name config | xargs grep -l "^status closed"`; + $closed = split("\n",trim($closed)); + $threemonthsago = mktime (0,0,0,date("m")-$closed_age,date("d"),date("Y")); + foreach($closed as $config) { + $domain = basename(dirname(dirname($config))); + $list = basename(dirname($config)); + if ($domain == 'expl') { + $domain = $defaultdomain; + } + echo "$list@$domain\n"; + $updatetime = get_time($config,'update'); + if ($updatetime == 0) + $updatetime = get_time($config,'creation'); + + if ($updatetime < $threemonthsago) + $old["$list@$domain"] = date("m.d.y", $updatetime); + } + write_array($old, $closed_datafile); +} + +function do_update_dormant() { + global $expl, $arc, $dormant_datafile, $dormant_age, $config_change_age, $defaultdomain; + + $dormant = array(); + # create a list of the last $dormant_age months + for($i=0; $i<=$dormant_age; $i++) { + $months[] = date("Y-m", mktime (0,0,0,date("m")-$i,date("d"),date("Y")) ); + } + $oldtime = mktime(0,0,0,date("m")-$config_change_age,date("d"),date("Y")); + $lists = `find $expl -mindepth 1 -maxdepth 1 -follow -type d -printf "%f\n"`; #look in expl rather than arc to include lists that have never have a message sent + $lists = split("\n",trim($lists)); + $domain = $defaultdomain; + + #$lists = array('mail@lists.riseup.net'); + foreach($lists as $list) { + $found = false; + #list($list, $domain) = explode('@', $list); #domain not include in /home/sympa/expl + foreach($months as $month) { + if (is_dir("$arc/$list@$domain/$month")) { + $found = true; + #echo "found $arc/$list@$domain/$month\n"; + break; + } + } + if ($found == false) { + #$config = "$expl/$domain/$list/config"; + $config = "$expl/$list/config"; + if (file_exists($config)) { + // skip over lists which have had their configs modified. + #echo `ls -l $expl/$domain/$list/config`; + $updatetime = get_time($config); + if ($updatetime > $oldtime) { + echo "$list@$domain: skipping because config changed\n"; + continue; + } + } + $dormant[] = "$list@$domain\n"; + echo "$list@$domain: dormant\n"; + } + } + write_array($dormant, $dormant_datafile, false); +} + +##################################### +## HELPER FUNCTION + +function menu($menu, $text, $clear=true) { + $cmd = ''; + if ($clear) + $cmd .= "clear\n"; + $cmd .= "echo\necho '$text'\necho\nsleep 0.1\n"; + $cmd .= "select item in \\\n"; + foreach($menu as $action => $c) { + $cmd .= "'$c' \\\n"; + } + $cmd .= "; do\necho \$item\nbreak\ndone\n"; + while(true) { + $ret = array_search(system($cmd), $menu); + if ($ret) return $ret; + } +} + +function preg_match_file($pattern, $filename, &$matches) { + ob_start(); + readfile($filename); + $data = ob_get_contents(); + ob_end_clean(); + $status = preg_match($pattern,$data,$matches); + return $status; +} + +function write_array($array, $filename, $writekeys=true) { + $out = fopen($filename, 'w'); + if ($out === false) die("Could not open $filename\n"); + if ($writekeys) { + foreach($array as $key => $value) { + fwrite($out, "$key $value\n"); + } + } + else { + foreach($array as $value) { + fwrite($out, "$value\n"); + } + } + fclose($out); +} + +function read_array($filename, $writekeys=true) { + $data = file($filename); + if (!$writekeys) { + foreach($data as $i) { + $array[] = trim($i); + } + return $array; + } + else { + $array = array(); + foreach($data as $i) { + list($key, $value) = explode(' ',trim($i)); + if ($key != '' && $value != '') + $array[$key] = $value; + } + return $array; + } +} + +function get_update_user($configfile) { + $f = fopen($configfile,'r'); + while ($f && !feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == 'update') { + while (!feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == '') + break; + elseif(preg_match("/^\s*email (.*)$/", $line,$matches)) { + return $matches[1]; + break; + } + } + } + } + return 'error'; + +} + +/** + * + * looking for: + * update + * date_epoch 1070329881 + * date 01 Dec 2003 at 17:51:21 + * email elijah@riseup.net + * + **/ + +function get_time($configfile, $stanza='update') { + $f = fopen($configfile,'r'); + while ($f && !feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == $stanza) { + while (!feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == '') + break; + elseif(preg_match("/^\s*date_epoch (.*)$/", $line,$matches)) + return $matches[1]; + } + } + } + return '0'; +} + +## +## returns all owners and editors of a list +## + +function get_admins($file) { + if (!file_exists($file)) return; + + $admins = array(); + $f = fopen($file,'r'); + while ($f && !feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == 'owner' || $line == 'editor') { + while (!feof($f)) { + $line = trim(fgets($f,2048)); + if ($line == '') + break; + elseif(preg_match("/^\s*email (.*)$/", $line,$matches)) { + $admins[] = $matches[1]; + break; + } + } + } + } + $admins = array_unique($admins); + return $admins; +} + +function remove_from_datafile($datafile, $text) { + $data = read_array($datafile, false); + $data = array_flip($data); + unset($data[$text]); + $data = array_flip($data); + write_array($data, $datafile, false); +} + +/* takes list as listname@domain */ +function close_list($list) { + global $expl, $close_msg, $dormant_age, $dormant_datafile, $arc, $cemetary, $bin, $from; + + list($list, $domain) = explode('@', trim($list)); + #$admins = get_admins("$expl/$domain/$list/config"); + $admins = get_admins("$expl/$list/config"); + + + /* + * It seems like this moved the archives for dormant lists + * w/no admins, and did not move the settings. + * At least for now, we will close the dormant-no-admin lists, + * and send an email to listmaster. + */ + /* if (count($admins) == 0) { + # no config + echo ". moving archives to cemetary."; + `mv $arc/$list@$domain/ $cemetary/arc-$list@$domain`; + } + else { */ + + $ok = system("$bin/sympa.pl --close_list $list@$domain"); + echo "\n"; + if ($ok === FALSE) { + die("Could not call sympa.pl --close_list\n"); + } else { + if (count($admins) == 0) { + eval("\$str = \"$close_msg_to_listmaster\";"); + mail($listmaster, "List Closed:$list@$domain", $str,"From: $from"); + } else { + eval("\$str = \"$close_msg\";"); + mail(join(',',$admins), "List Closed: $list@$domain", $str,"From: $from"); + } + } + //} + remove_from_datafile($dormant_datafile, "$list@$domain"); +} + +?> diff --git a/tools/email-unsub-instruct b/tools/email-unsub-instruct new file mode 100644 index 0000000000000000000000000000000000000000..4d749cab0004ce5cdf32432893ea3ba7ecb2ac4c --- /dev/null +++ b/tools/email-unsub-instruct @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w + +# unsub_instructions.pl +# send unsubscribe instructions to a user +# usage: unsub_instructions.pl <email_address> + +use strict; +use Net::SMTP; +if (length($ARGV[0]) < 5 && @ARGV > 1) { + die "no mailto and/or list specified"; +} + +my $smtp; +my ($subject, $mailfrom, $mailto, $mailbcc); +my ($smtp_server, @lists, $list); +my ($body_start, $body_end, $body_instructions, $body_unsub_list_text); +my ($unsub_baseurl, $unsub_address_suffix); + +# get parameters +$mailto = shift @ARGV; +@lists = @ARGV; + +# config +$smtp_server = 'localhost'; +$mailfrom = 'lists@riseup.net'; +$mailbcc = 'lists@riseup.net'; + +$subject = "List unsubscribe instructions from riseup.net"; +$body_start = "To unsubscribe from a riseup.net email list, please use the instructions below.\n\n"; +$body_end = "\n\nIn Solidarity,\nriseup.net collective\n"; +# $body_email_lists = "You are subscribed to @lists lists:" . join(@lists, "\@riseup.net\n") . "\@riseup.net\n\n"; +# $body_instructions = "Email the address or visit the webpage for each list you want to unsbscribe from:"; +$unsub_baseurl = 'https://lists.riseup.net/www/sigrequest/'; +$unsub_address_suffix = '-unsubscribe@lists.riseup.net'; + +foreach $list (@lists) { + $body_unsub_list_text .= "To unsubscribe from $list:\n send email to $list$unsub_address_suffix OR\n visit: $unsub_baseurl$list\n\n"; +} + +# prepare the email +$smtp = Net::SMTP->new($smtp_server); + +$smtp->mail($mailfrom); +$smtp->to($mailto); +$smtp->bcc($mailbcc); + +$smtp->data(); +$smtp->datasend("To: $mailto\n"); +$smtp->datasend("Bcc: $mailbcc\n"); +$smtp->datasend("Subject: $subject\n"); +$smtp->datasend("\n"); +my $temp_body = $body_start . $body_unsub_list_text . $body_end; +$smtp->datasend($temp_body); +$smtp->dataend(); + +$smtp->quit; \ No newline at end of file diff --git a/tools/find_lists_without_owners.rb b/tools/find_lists_without_owners.rb new file mode 100755 index 0000000000000000000000000000000000000000..a69d3f92d2e40931cc856e488c2984d54f0c6176 --- /dev/null +++ b/tools/find_lists_without_owners.rb @@ -0,0 +1,17 @@ +#!/usr/bin/ruby +require "ftools" + +if ARGV[0].nil? or !File.directory? ARGV[0] + printf "Usage:\n%s /path/to/sympa/expl\n", $0 + exit 1 +end + +expl = ARGV[0] +Dir.chdir(expl) +Dir.foreach expl do |list| + if list !~ /^\./ and File.directory? list + config_file_name = list + '/config' + config_file = IO.read(config_file_name) if File.exist? config_file_name + puts list + " doesn't have an owner" if (config_file !~ /(^owner$).+(^email .+@.+$)/m) + end +end diff --git a/tools/findaccount b/tools/findaccount new file mode 100755 index 0000000000000000000000000000000000000000..f9840605868e9dd3dca8ab269d929b04e8f7c86b --- /dev/null +++ b/tools/findaccount @@ -0,0 +1,20 @@ +#!/bin/sh +# findaccount - search the user, subscriber, and admin tables for an address +# NOTE: this script requires the current user has read access to the db + +echo "### Searching for $1 in user_table ###" +mysql --batch --database=sympa --execute \ +"select email_user, password_user from user_table where email_user like '%$1%'" + +echo "" +echo "### Searching for $1 in subscriber_table ###" + +mysql --batch --database=sympa --execute \ +"select list_subscriber, user_subscriber from subscriber_table where user_subscriber like '%$1%'" + +echo "" +echo "### Searching for $1 in admin_table ###" + +mysql --batch --database=sympa --execute \ +"select list_admin, user_admin, role_admin from admin_table where user_admin like '%$1%'" + diff --git a/tools/findadmin b/tools/findadmin new file mode 100755 index 0000000000000000000000000000000000000000..591ba0dd015b2dfa7277cde78ce98bd9363665cb --- /dev/null +++ b/tools/findadmin @@ -0,0 +1,6 @@ +#!/bin/sh +# findadmin - find admins based on a substring and print list, name, role +# NOTE: this script requires the current user has read access to the db + +mysql --batch --database=sympa --execute \ +"select list_admin, user_admin, role_admin from admin_table where user_admin like '%$1%'" diff --git a/tools/findbadlists b/tools/findbadlists new file mode 100755 index 0000000000000000000000000000000000000000..829743515824b19ef21d1f536c0ae11830f78e87 --- /dev/null +++ b/tools/findbadlists @@ -0,0 +1,73 @@ +#!/usr/bin/perl -w +# findbadlists - find lists that are in the db but not expl, and vice versa +# NOTE: this script requires the current user has read access to the db +# WARNING: this script assumes you are using riseup's list_table patches +# and ecology script +# Matt Taggart <taggart@riseup.net> 2011-06 + +# lists can be +# 1. listed as open in the database and have a dir in expl/ +# 2. listed as closed in the database and have a dir in expl/ +# 3. listed as closed in the database and have a dir in cemetary/ +# but shouldn't be +# 4. in the database (open or closed) and not have a dir in either expl/ +# or cemetary/ +# 5. not in the database and have a dir in either expl/ or cemetary/ + +$domain='lists.riseup.net'; +$expldir='/home/sympa/expl/'; +# yes the dir is mispelled +$cemeterydir='/home/sympa/cemetary/'; + +# get a list of all lists in the db +$listsql='mysql -N --batch --database=sympa --execute "select name_list from list_table"'; + +open(LISTDUMP, "$listsql|") or die "cannot get dump of lists from database\n"; +# sympa has a special 'X509-user-cert' directory that we ignore +open(EXPLDUMP, "find $expldir -maxdepth 1 -mindepth 1 -type d|grep -v X509-user-cert|") or die "cannot get dump of lists from expl\n"; +open(CEMDUMP, "find $cemeterydir -maxdepth 1 -mindepth 1 -type d|") or die "cannot get dump of lists from the cemetery\n"; + +# load everything into hashes +while (<LISTDUMP>) { + chomp; + $lists{$_}++; +} +while (<EXPLDUMP>) { + chomp; + m:^$expldir/?(.*)$:; + $expl{$1}++; +} +while (<CEMDUMP>) { + chomp; + m:^$cemeterydir/?(.*)\@$domain$:; + $cemetery{$1}++; +} + +print "### lists in the database but not in expl or the cemetery ###\n"; +foreach $list ( keys %lists ) { + $found=0; + + if ( $expl{$list} ) { + delete $expl{$list}; + $found++; + } + + if ( $cemetery{$list} ) { + delete $cemetery{$list}; + $found++; + } + + next if $found; + print "$list\n"; +} + +print "### lists not in the database but in expl ###\n"; +foreach $list ( keys %expl ) { + print "$list\n"; +} + +print "### lists not in the database but in the cemetery ###\n"; +foreach $list ( keys %cemetery ) { + print "$list\n"; +} + diff --git a/tools/findbogus b/tools/findbogus new file mode 100755 index 0000000000000000000000000000000000000000..2191215e6d825766f5885b4942db5cfe7ebf2a53 --- /dev/null +++ b/tools/findbogus @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# listbogus - list all sympa user email addresses that violate the rfc's for +# what constitutes a valid email address. also list counts by domain, by +# list count, and by list percentage. +# NOTE: this script requires the current user has read access to the db +# requires Email::Valid, apt-get install libemail-valid-perl +# Matt Taggart <taggart@riseup.net> 2011-06 + +use Email::Valid; + +$subscriberssql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; + +open(SUBSCRIBERS, "$subscriberssql|") or die "cannot get dump of subscribers from database\n"; +open(ADDRESSES, ">addresses") or die "cannot open addresses\n"; +open(BYDOMAIN, ">bydomain") or die "cannot open bydomain\n"; +open(BYLISTC, ">bylistcount") or die "cannot open bylistcount\n"; +open(BYLISTP, ">bylistpercent") or die "cannot open bylistpercent\n"; + +while (<SUBSCRIBERS>) { + # $1 is the list name + # $2 is the subscriber address + # for $3 we try to get the domain name, but since the address might not be + # valid we can't assume it will have a user part or an @ + # also sympa subscriber names might have leading/trailing space and/or <> + # and still mostly work + # english version of the regexp: + # match the beginning of the line, then non-greedily match everything up to + # the first tab as $1, then maybe some space characters, then maybe a < + # symbol, then match greedily some characters up to a @ and non-greedily + # some more characters up to maybe a > symbol and maybe some spaces and + # then the end of line, with all the character@character stuff as $2 but + # just the characters after the @ as $3 + m/^(.*?)\t\s*<?(.*\@(.*?))>?\s*$/; + $listcount{$1}++; + unless(Email::Valid->address( -address => $2, + -fqdn => 1, + #-mxcheck => 1, + -local_rules => 1, + -tldcheck => 1 )) { + print ADDRESSES "$2: $Email::Valid::Details\n"; + $badlists{$1}++; + $domains{$3}++; + } +} + +foreach $domain ( sort { $domains{$b} <=> $domains{$a} } keys %domains) { + print BYDOMAIN "$domains{$domain} $domain\n"; +} + +foreach $list ( sort { $badlists{$b} <=> $badlists{$a} } keys %badlists) { + $percent{$list} = ( $badlists{$list} / $listcount{$list} ) * 100; + printf BYLISTC '%s %s (%.2f%%)', $badlists{$list}, $list, $percent{$list}; + print BYLISTC "\n"; +} + +foreach $list ( sort { $percent{$b} <=> $percent{$a} } keys %percent) { + printf BYLISTP '%.2f%% %s (%s)', $percent{$list}, $list, $badlists{$list}; + print BYLISTP "\n"; +} + +print "Done. Address list in 'addresses', counts by domain in 'bydomain',\n"; +print " by list count in 'bylistcount', by list percent in 'bylistpercent'\n"; diff --git a/tools/findbounces b/tools/findbounces new file mode 100755 index 0000000000000000000000000000000000000000..cfc5cb6a6ac3c8820bfaab028447f1f761be284a --- /dev/null +++ b/tools/findbounces @@ -0,0 +1,7 @@ +#!/bin/sh +# findbounces - find users in the subscriber table based on a substring and +# print list, user, and bounce score +# NOTE: this script requires the current user has read access to the db + +mysql --batch --database=sympa --execute \ +"select list_subscriber,user_subscriber,bounce_score_subscriber from subscriber_table where user_subscriber like '%$1%'" diff --git a/tools/findmissing b/tools/findmissing new file mode 100644 index 0000000000000000000000000000000000000000..3c17c0c827cc93b31072399f5523f8d3c323de37 --- /dev/null +++ b/tools/findmissing @@ -0,0 +1,2 @@ +grep "Unable to open" /var/log/sympa | sed s/.*file \(.*\),.*/\1/ | sort -u + diff --git a/tools/findnoarchive b/tools/findnoarchive new file mode 100755 index 0000000000000000000000000000000000000000..575d69627a4878c9ed55d1a0f5a612ac5c8a5fc4 --- /dev/null +++ b/tools/findnoarchive @@ -0,0 +1,6 @@ +#!/bin/sh +# findnoarchive - print a list of lists that have archives turned off +# NOTE: this script requires the current user has read access to the db + +mysql -N --batch --database=sympa --execute "select name_list from list_table where web_archive_list ='0';" + diff --git a/tools/findnonsubscribed b/tools/findnonsubscribed new file mode 100755 index 0000000000000000000000000000000000000000..19876b5cb7b40f77097d500ed34f9767d92bb169 --- /dev/null +++ b/tools/findnonsubscribed @@ -0,0 +1,28 @@ +#!/usr/bin/perl -w +# findnonsubscribed - list all users that do not have any subscriptions +# NOTE: sympa has the purge_user_table_task that already does this cleanup +# this script is just to confirm if it's working. +# NOTE: this script requires the current user has read access to the db +# Matt Taggart <taggart@riseup.net> 2012-04 + +# get subscribers (and we don't care if the lists are open or not) +$subscriberssql='mysql -N --batch --database=sympa --execute "select user_subscriber from subscriber_table"'; +# get users +$userssql='mysql -N --batch --database=sympa --execute "select email_user from user_table"'; + +open(SUBSCRIBERS, "$subscriberssql|") or die "cannot get dump of subscribers from database\n"; +open(USERS, "$userssql|") or die "cannot get dump of users from database\n"; + +while (<SUBSCRIBERS>) { + chomp; + $address = $_; + $subscribers{$address}++; +} + +while (<USERS>) { + chomp; + $user = $_; + if ( ! $subscribers{$user} ) { + print "$user\n"; + } +} diff --git a/tools/findoldsmall b/tools/findoldsmall new file mode 100755 index 0000000000000000000000000000000000000000..953d0b053a9971c134f7c174107fd02e5e172d5c --- /dev/null +++ b/tools/findoldsmall @@ -0,0 +1,50 @@ +#!/usr/bin/perl -w +# findoldsmall - list lists with only 0 or 1 subscribers and config older than +# 60 days, also list lists where we couldn't find the config file +# NOTE: this script requires the current user has read access to the db +# Matt Taggart <taggart@riseup.net> 2011-06 + +open(ERROR,">error") or die "cannot open error file\n"; +open(OUTPUT,">oldsmall") or die "cannot open output file\n"; + +# get a list of address and listname pairs for all open lists +$subsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; +# get a list of all open lists +$listsql='mysql -N --batch --database=sympa --execute "select name_list from list_table where status_list=\'open\'"'; + +open(SUBDUMP, "$subsql|") or die "cannot get dump of address+list pairs from database\n"; +open(LISTDUMP, "$listsql|") or die "cannot get dump of lists from database\n"; + +# init a hash with all lists +while (<LISTDUMP>) { + chomp; + $listcount{$_} = 0; +} + +# increment the counts +while (<SUBDUMP>) { + chomp; + m/^(.*)\t.*?\@(.*?)$/; + # keep a count of the addresses per list + $listcount{$1}++; +} + +# print out the listname, count until we get to lists with 2 or more subscribers +foreach $list ( sort { $listcount{$a} <=> $listcount{$b} } keys %listcount) { + last if $listcount{$list} > 1; + + $file="/home/sympa/expl/$list/config"; + + if ( ! -f $file || ! -r $file ) { + print ERROR "$list\n"; + next; + } + + $mtime=(stat($file))[9]; + #print "$file $mtime\n"; + print OUTPUT "$list\n" if (time - $mtime) > 60*60*24*60; +} + + + + diff --git a/tools/findsimilarlists b/tools/findsimilarlists new file mode 100755 index 0000000000000000000000000000000000000000..9ddfb84cd7fa9ba7bee6b01ad5cdebd1e1938761 --- /dev/null +++ b/tools/findsimilarlists @@ -0,0 +1,134 @@ +#!/usr/bin/perl -w +# findsimilarlists - find lists that are similar, could be spammers +# NOTE: this script requires the current user has read access to the db +# apt-get install liblist-compare-perl libperl6-form-perl +# Matt Taggart <taggart@riseup.net> 2012-09 + +use strict; + +use vars qw($opt_h $num $small $date $listsql + $count $pair $one $two $lcma $list + $i $j $sizei $sizej $min $ratio + $intersection $union $jaccard $subset + @ignore %lists %results ); + +# number we want to see +$num = 25; + +# under this size we don't bother to compare +$small=500; + +# ignore these lists +@ignore = ( 'mailusers', 'listadmins', 'newsletter' ); + +use List::Compare; +use Perl6::Form; +use Getopt::Std; +$Getopt::Std::STANDARD_HELP_VERSION="true"; + +getopts('h'); + +sub HELP_MESSAGE { + print "Usage: findsimilarlists [-h]\n"; +} + +$date=`date`; +chomp($date); + +$listsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table"'; +#$listsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; +#$listsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\' limit 100000"'; + +open(LISTDUMP, "$listsql|") or die "cannot get dump of address+list pairs from database\n"; + + +# load all the addresses into a hash of arrays +# this is _way_ faster than doing lost of sql queries and currently (for +# lists.riseup.net) is about 62mb +while (<LISTDUMP>) { + chomp; + m/^(.*)\t(.*)$/; + push @{ $lists{$1} },"$2"; +} + +# remove the lists we want to ignore +foreach $list ( @ignore ) { + delete $lists{$list}; +} + +# remove the small lists +foreach $list ( keys %lists ) { + if ( $#{ $lists{$list} } <= $small ) { + delete $lists{$list}; + } +} + +foreach $i ( keys %lists) { + foreach $j ( keys %lists) { + # don't compare an array to itself and we only need to do unique pairs + last if $i eq $j; + + # determine the smaller list + $sizei = $#{ $lists{$i} }; + $sizej = $#{ $lists{$j} }; + $min = [$sizej, $sizei]->[$sizei <= $sizej]; + + # if list sizes are really different, don't bother to compute + $ratio = $min / ( $sizei + $sizej - $min ); + next if ( $ratio >= 0.1 ); + + print "Comparing $i with $j...\n"; + $lcma = List::Compare->new('-u', $lists{$i}, $lists{$j}); + + $intersection = $lcma->get_intersection; + $union = $lcma->get_union; + # compute the Jaccard index + # http://en.wikipedia.org/wiki/Jaccard_index + $jaccard = $intersection / $union * 100; + # divide the intersection by the smaller size + $subset = $intersection / $min * 100 ; + $results{"$i $j"}= [ $jaccard, $subset ]; + } +} + +if ( $opt_h ) { + print "<style>table.single{border: 1px solid;border-collapse: collapse;}\n.single td, .single th{border-width: 1px 1px 1px 1px;border-style: solid;}\n</style>\n"; + print "<h3>Similar large lists</h3>\n"; + print "(<i>generated ".$date."</i>)\n"; + print "<table class=\"single\">\n"; + print "<tr><th align=center>Similar</th><th align=center>Subset</th><th align=center>Lists</th></tr>\n"; +} else { + print "Similar large lists\n"; + print "(generated ".$date.")\n"; + print "Similar Subset Lists\n"; + print "-------------------------------------------------------------------\n"; +} + +$count=0; + +foreach $pair ( sort { $results{$b}[0] <=> $results{$a}[0] } keys %results) { + # stop when we get to $num + last if $count >= $num; + # don't bother to print anything tiny + last if $results{$pair}[0] <= .1; + + ( $one, $two ) = split(/ /,$pair); + + if ( $opt_h ) { + print form + "<tr><td>{].0}</td><td>{].0}</td><td><a href=\"https://lists.riseup.net/www/info/{<+}\">{<+}</a>({<+}) / <a href=\"https://lists.riseup.net/www/info/{<+}\">{<+}</a>({<+})</td></tr>", + $results{$pair}[0], $results{$pair}[1], $one, $one, $#{ $lists{$one} }, $two, $two, $#{ $lists{$two} }; + } else { + print form + "{].0} {].0} {<+} ({<+}) / {<+} ({<+})", + $results{$pair}[0], $results{$pair}[1], $one, $#{ $lists{$one} }, $two, $#{ $lists{$two} }; + } + $count++; +} + +if ( $opt_h ) { + print "</table>\n"; + print "Similar is intersection divided by union, 100 is identical.<br>\n"; + print "Subset is intersection divided by the size of the smaller list, 100 means the smaller list is a perfect subset of the larger.</p>\n"; +} + diff --git a/tools/finduser b/tools/finduser new file mode 100755 index 0000000000000000000000000000000000000000..39aad4d8057580dfb59f7757b63ed89a5606c936 --- /dev/null +++ b/tools/finduser @@ -0,0 +1,7 @@ +#!/bin/sh +# finduser - list users in the subscriber table that match a substring +# NOTE: this script requires the current user has read access to the db + +mysql --batch --database=sympa --execute \ +"select user_subscriber from subscriber_table where user_subscriber like '%$1%'" + diff --git a/tools/fix_reply_to_settings_6.1.9 b/tools/fix_reply_to_settings_6.1.9 new file mode 100755 index 0000000000000000000000000000000000000000..4fe8f4d876f591a197ae787b85c82454d4881b0b --- /dev/null +++ b/tools/fix_reply_to_settings_6.1.9 @@ -0,0 +1,105 @@ +#!/usr/bin/perl -w +# fix_reply_to_settings_6.1.9 - do a search and replace on every config file. +# in the reply_to_header section, make sure that no list has set: +# 'apply respect' + 'value list' (this is blatantly ignored by some mail clients) +# or +# 'apply forced' + 'value sender' (this causes reply-to to be undef) +# +# 'changescenari' originally by elijah in php4 +# 'changescenari' rewritten in perl by taggart 2012-02 +# 'changescenari' revised by taggart in 2012-08 +# 'changescenari' recommissioned as this script by kclair in 2012-08 + +use Getopt::Std; +$Getopt::Std::STANDARD_HELP_VERSION="true"; + +use vars qw($opt_d); +use vars qw($opt_l); + +getopts('dl:'); + +sub HELP_MESSAGE { + print "Usage: changescenari [-d] [-l <listname>]\n"; + print " -d : actually change things\n"; + print " -l : specify list to change\n"; + print "BE CAREFUL! Run without -d and review what it will do first!\n"; +} + +my $listdir='/home/sympa/expl/'; +my $tmpdir='/home/sympa/tmp'; + +# create hash of replacements +%replacements = ( + # we must make sure that any list that sets the list as the reply-to is forced + # this is because of some errant mail clients not respecting the 'respect' value + '\nreply_to_header\napply respect\nvalue list' => + '\nreply_to_header\napply forced\nvalue list', + # we must make sure that any list that sets the sender is reply-to is not forced + # this due to a bug where that combination makes the reply-to header undef + '\nreply_to_header\napply forced\nvalue sender' => + '\nreply_to_header\napply respect\nvalue sender' +); + +if ($opt_l) { + @configs = ("$listdir/$opt_l/config"); +}else { + # get list of configs + $output=qx(find $listdir -name config); + @configs = split /\n/,$output; +} + +foreach $config (@configs) { + + $list=$config; + $list =~ s:^.*/(.*?)/config:$1:; + + print "---\nlooking at $list...\n"; + + local $/ = undef; + open(OLD,"$config") || die "ERROR: cannot open $config\n"; + $config_text = <OLD>; + close OLD; + + # we're not going to make a new version until we have a reason to + $newversion = 0; + + next unless $config_text =~ /\nreply_to_header\n/; + if ($config_text =~ /(\nreply_to_header\n.*\n.*)\n\n/) { + $reply_to_match = $1; + foreach $line (keys %replacements) { + if ($reply_to_match =~ /$line/) { + print "NOTE: found '$line' in $list\n"; + print " replacing with '$replacements{$line}'\n"; + # we're creating a new config file + $newversion = 1; + $config_text =~ s/\n$line\n/\n$replacements{$line}\n/; + } + } + if ($newversion == 0) { + print "Did not find a match in $config.\n"; + print "reply_to_header block is: $reply_to_match\n"; + } + }else { + print "reply_to_header not matched.\n"; + } + + # only do it if the user specified -d + if ($opt_d) { + if ($newversion) { + # write the new version to a temp file + die "ERROR: $config.new exists!\n" if ( -e "$config.new" ); + open(NEW,">$config.new") || die "ERROR: cannot open $config.new\n"; + print NEW $config_text; + close NEW; + # move it in place + rename "$config.new", $config || die "ERROR: cannot move $config.new into place\n"; + # tell sympa to update the config.bin for the list + #qx(/home/sympa/bin/sympa.pl --reload_list_config --list=$list@lists.riseup.net) + } + } +} + +if (! $opt_d and $newversion) { + print "WARNING: didn't actually make any changes. Review the above and when you\n"; + print " are ready to run for real add the -d flag\n"; +} diff --git a/tools/fs.php b/tools/fs.php new file mode 100644 index 0000000000000000000000000000000000000000..c717aa50bab64c377ed1ada5f0063431d829493b --- /dev/null +++ b/tools/fs.php @@ -0,0 +1,107 @@ +<?php + +/************ + +fs.php: file system related tools shell scripts written in php + +*************/ + +define('FILE_APPEND', 1); + +class fs { + +function preg_match_file($pattern, $filename, &$matches) { + ob_start(); + readfile($filename); + $data = ob_get_contents(); + ob_end_clean(); + $status = preg_match($pattern,$data,$matches); + return $status; +} + +function write_map(&$array, $filename) { + fs::write_array($array,$filename, true); +} + +function read_map($filename, $strip=false) { + $ret = fs::read_array($filename,true); + if ($strip) + $ret = array_map(create_function('$arg','return trim($arg,"\" \n");'),$ret); + return $ret; +} + +function write_array(&$array, $filename, $writekeys=false) { + $out = fopen($filename, 'w'); + if ($out === false) die("Could not open $filename\n"); + if ($writekeys) { + foreach($array as $key => $value) { + fwrite($out, "$key=$value\n"); + } + } + else { + foreach($array as $value) { + fwrite($out, "$value\n"); + } + } + fclose($out); +} + +function read_array($filename, $writekeys=false) { + $data = file($filename); + if (!$writekeys) { + foreach($data as $i) { + $array[] = trim($i); + } + return $array; + } + else { + $array = array(); + foreach($data as $i) { + list($key,$value) = explode('=',trim($i)); + $key = trim($key); $value = trim($value); + if ($key != '' && $value != '') + $array[$key] = $value; + } + return $array; + } + # remove comments + $array = preg_replace('/^#.*$/', '', $array); + return $array; +} + +function preg_replace_file($search, $replace, $files) { + if (!is_array($files)) $files = array($files); + + foreach($files as $file) { + $data = file($file); + $data = preg_replace($search, $replace, $data); + $fp = fopen($file, 'w'); + fwrite($fp, join('', $data)); + fclose($fp); + } +} + +function put($filename, $content, $flags = 0) { + $flag = ($flags & FILE_APPEND) ? 'a' : 'w'; + if ($flag == 'w' && file_exists($filename)) + unlink($filename); // in case immutable invert link + if (!($file = fopen($filename, $flag))) + return false; + $n = fwrite($file, $content); + fclose($file); + return $n ? $n : false; +} + +function append($filename, $content) { + if (!($file = fopen($filename, 'a'))) + return false; + $n = fwrite($file, $content); + fclose($file); + return $n ? $n : false; +} + +} // end class + +$fs = new fs(); + +?> \ No newline at end of file diff --git a/tools/list.close b/tools/list.close new file mode 100755 index 0000000000000000000000000000000000000000..1b3b888c20c17342cdba3b5b1b07cec662e47f00 --- /dev/null +++ b/tools/list.close @@ -0,0 +1,33 @@ +#!/usr/bin/perl + +## +## command line script to close a list +## usage: +## list.close <listname> +## + +require 'list.common'; + +my $list = new List($ARGV[0]); + +if ($list->{'admin'}{'status'} eq 'closed') { + print STDERR "Already closed"; + return; +} + +## Dump subscribers +$list->_save_users_file("$list->{'dir'}/subscribers.closed.dump"); + +## Delete users +my @users; +for ( my $user = $list->get_first_user(); $user; $user = $list->get_next_user() ){ + push @users, $user->{'email'}; +} +$list->delete_user(@users); + +## Change status & save config +$list->{'admin'}{'status'} = 'closed'; +$list->{'admin'}{'defaults'}{'status'} = 0; +$list->save_config("root@riseup.net"); +$list->savestats(); + diff --git a/tools/list.common b/tools/list.common new file mode 100755 index 0000000000000000000000000000000000000000..4dbf3535a29f78c1a188127cb9e5bf8783c95b5d --- /dev/null +++ b/tools/list.common @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +## +## a common inlude file for +## the command line versions of list +## commands +## + + +use lib '/home/sympa/bin'; +use Conf; # to load Sympa conf which is needed by List.pm +use List; +use Log; # if you want to get logs of List.pm + +# Load the Sympa configuration : +unless (Conf::load('/etc/sympa/sympa.conf')) { + print STDERR "Can't load Sympa configuration file"; + exit 1; +} + +# If you want to get logs of List.pm +# &do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa'); + +# check availabity of Sympa database +#if ($Conf{'db_name'} and $Conf{'db_type'}) { +# unless ($List::use_db = &List::probe_db()) { +# print STDERR "Sympa can't connect to database"; +# exit 1; +# } +#} +&List::_apply_defaults(); # else reading of a List configuration won't work + diff --git a/tools/list_stats b/tools/list_stats new file mode 100644 index 0000000000000000000000000000000000000000..670f80cceda9ab585b481d2db032d571699a8b97 --- /dev/null +++ b/tools/list_stats @@ -0,0 +1,22 @@ +#!/bin/sh + +mysql -u sympa -e 'SELECT list_subscriber, COUNT(user_subscriber) from subscriber_table GROUP BY list_subscriber INTO OUTFILE '/tmp/whatever.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';' + +for list in `cat /tmp/whatever.csv | cut -d, -f1` +do + listinfo=`grep "^$list," /tmp/whatever.csv` + echo -n "$listinfo," >> /tmp/whatever2.csv + + msgs=`cat /home/sympa/expl/$list/stats | cut -d\ -f1` + if [ ! -z $msgs ] + then + echo -n "$msgs," >> /tmp/whatever2.csv + else + echo -n "0," >> /tmp/whatever2.csv + fi + + now=`date +%s` + created=`grep -A 3 creation /home/sympa/expl/$list/config |grep date_epoch| awk '{print $2}'` + seconds=$((now-created)) + echo $seconds >> /tmp/whatever2.csv +done diff --git a/tools/listaolbounces b/tools/listaolbounces new file mode 100755 index 0000000000000000000000000000000000000000..effb5dfb4e370fc0391040d58ff8d772ea43e578 --- /dev/null +++ b/tools/listaolbounces @@ -0,0 +1,67 @@ +#!/usr/bin/perl -w +# listaolbounces - prints a listing of all AOL related users with a bounce +# score over 50. prints bounce score, user; ordered by bounce score. +# NOTE: this script requires the current user has read access to the db + +# score limit +$limit=50; + +# these were all discovered to be using aol for MX at one point, they might +# not anymore, checking might be good, but the downside for false negatives +# is low +%domains= ( 'aol.com' => 1, '2die4.com' => 1, 'activist.com' => 1, + 'africamail.com' => 1, 'aim.com' => 1, 'alumnidirector.com' => 1, + 'americamail.com' => 1, 'amorous.com' => 1, 'artlover.com' => 1, + 'asia.com' => 1, 'berlin.com' => 1, 'bikerider.com' => 1, + 'boardermail.com' => 1, 'californiamail.com' => 1, 'catlover.com' => 1, + 'cheerful.com' => 1, 'chemist.com' => 1, 'clerk.com' => 1, + 'cliffhanger.com' => 1, 'columnist.com' => 1, 'comic.com' => 1, + 'compuserve.com' => 1, 'consultant.com' => 1, 'cs.com' => 1, + 'csi.com' => 1, 'cutey.com' => 1, 'cyberdude.com' => 1, 'cybergal.com' => 1, + 'diplomats.com' => 1, 'doctor.com' => 1, 'dr.com' => 1, 'earthling.net' => 1, + 'email2me.net' => 1, 'email.com' => 1, 'engineer.com' => 1, 'europe.com' => 1, + 'europemail.com' => 1, 'execs.com' => 1, 'fastermail.com' => 1, + 'financier.com' => 1, 'goowy.com' => 1, 'graffiti.net' => 1, + 'hilarious.com' => 1, 'hot-shot.com' => 1, 'iname.com' => 1, + 'indiya.com' => 1, 'innocent.com' => 1, 'inorbit.com' => 1, + 'intelligencia.com' => 1, 'japan.com' => 1, 'journalist.com' => 1, + 'kittymail.com' => 1, 'lawyer.com' => 1, 'lobbyist.com' => 1, + 'london.com' => 1, 'lords.com' => 1, 'loveable.com' => 1, 'madrid.com' => 1, + 'mail.com' => 1, 'mail.org' => 1, 'mailpuppy.com' => 1, 'mcom.com' => 1, + 'mindless.com' => 1, 'minister.com' => 1, 'munich.com' => 1, + 'musician.org' => 1, 'muslim.com' => 1, 'myself.com' => 1, 'nycmail.com' => 1, + 'netscape.net' => 1, 'outgun.com' => 1, 'paris.com' => 1, 'petlover.com' => 1, + 'photographer.com' => 1, 'photographer.net' => 1, 'planetmail.com' => 1, + 'playful.com' => 1, 'poetic.com' => 1, 'politician.com' => 1, + 'popstar.com' => 1, 'post.com' => 1, 'presidency.com' => 1, 'priest.com' => 1, + 'publicist.com' => 1, 'representative.com' => 1, 'rescueteam.com' => 1, + 'rome.com' => 1, 'royal.net' => 1, 'sailormoon.com' => 1, 'saintly.com' => 1, + 'samerica.com' => 1, 'sanfranmail.com' => 1, 'scientist.com' => 1, + 'socialworker.net' => 1, 'sociologist.net' => 1, 'soon.com' => 1, + 'teacher.com' => 1, 'techie.com' => 1, 'technologist.com' => 1, + 'tokyo.com' => 1, 'umpire.com' => 1, 'unforgettable.com' => 1, 'usa.com' => 1, + 'uymail.com'=> 1, 'whoever.com' => 1, 'who.net' => 1, 'wmconnect.net' => 1, + 'writemail.com'=> 1, 'writeme.com' => 1, 'yours.com' => 1 ); +#%domains = ( 'aol.com'' => 1, ''aim.com' => 1 ); + +$sql=qq(mysql -N --batch --database=sympa --execute "SELECT bounce_score_subscriber,user_subscriber FROM subscriber_table;"); +open(SQL, "$sql|") or die "cannot get dump of bouncers\n"; + +while (<SQL>) { + chomp; + m/^(.*)\t(.*?\@(.*))$/; + $score = $1; + $address = $2; + $domain = $3; + if ( $domains{$domain} ) { + if ( $score ne 'NULL' && $score >= $limit ) { + #print "$score $address $domain\n"; + $bouncers{$address} = $score; + } + next; + } +} + +foreach $address ( sort { $bouncers{$b} <=> $bouncers{$a} } keys %bouncers) { + print "$bouncers{$address} $address\n"; +} diff --git a/tools/listlists b/tools/listlists new file mode 100755 index 0000000000000000000000000000000000000000..296d7ab16ad20867fbaf262932f9c9624094ed8e --- /dev/null +++ b/tools/listlists @@ -0,0 +1,6 @@ +#!/bin/sh + +source ./common + +mysql -u $DB_USER -p$DB_PASS --batch --database=$DB_NAME --execute \ +"select name_list from list_table where status_list = 'open'" diff --git a/tools/listlongnames b/tools/listlongnames new file mode 100755 index 0000000000000000000000000000000000000000..dff54a3d51101ba71e4fa2afeee277a4f77549f8 --- /dev/null +++ b/tools/listlongnames @@ -0,0 +1,9 @@ +#!/bin/sh +# listlongnames - list the 10 longest list names, useful for finding lists +# that exceed the sympa limit and cause problems +# NOTE: this script requires the current user has read access to the db + +echo "### Top Ten Longest List Names ###" +mysql --batch --database=sympa --execute \ +"SELECT LENGTH(name_list) as name_len, name_list FROM list_table \ +ORDER BY name_len DESC LIMIT 10" diff --git a/tools/listmembers b/tools/listmembers new file mode 100755 index 0000000000000000000000000000000000000000..d64f15cc01e366a2d2dd814664dcc7aef68510f9 --- /dev/null +++ b/tools/listmembers @@ -0,0 +1,7 @@ +#!/bin/sh + +source ./common + +mysql -s -u $DB_USER -p$DB_PASS --batch --database=$DB_NAME --execute \ +"select user_subscriber from subscriber_table where list_subscriber like '$1'" + diff --git a/tools/merge-arctxt b/tools/merge-arctxt new file mode 100755 index 0000000000000000000000000000000000000000..6c5ff6dea58ea0dde3ed23b60e3d00de561f1c3d --- /dev/null +++ b/tools/merge-arctxt @@ -0,0 +1,107 @@ +#!/usr/bin/ruby + +=begin +merge the arctxt of two archive trees +=end + +source = '/crypt/sympa/arc' +dest = '/crypt2/sympa/arc' + +def cmd(torun) + system(torun) +# puts(torun) +end + +def build_file_hash(glob) + files = {} + Dir[glob].each do |filepath| + filename = File.basename(filepath) + files[filename] ||= {} + files[filename][:md5] = `md5sum #{filepath}`.split(' ').first + files[filename][:filename] = filepath + end + files +end + + +# +# from +# files_a = {'1' => {:filename => '/path/to/file', :md5 => '261df124'}, '2' => ... +# files_b = {'1' => {:filename => '/path/to/file', :md5 => '261df124'}, '2' => ... +# produces +# ['/path/to/file/1','/path/to/file/2'] +# + +def merge(files_a, files_b) + result = [] + files_a.keys.sort_by{|i|i.to_i}.each do |key| + if files_b[key].nil? + # not in b + result << files_a[key][:filename] + elsif files_b[key][:md5] == files_a[key][:md5] + # same in b an a + result << files_a[key][:filename] + else + # same filename in each, but different hash, add both + puts 'CONFLICT!!!!!!!!!!!!! %s %s' % [ files_a[key][:filename], files_b[key][:filename] ] + result << files_a[key][:filename] + result << files_b[key][:filename] + end + end + # now grab files in b but not in a + files_b.keys.sort.each do |key| + if files_a[key].nil? + result << files_b[key][:filename] + end + end + result +end + + +def merge_arctext_to(destbase) + puts Dir.pwd + Dir['*'].each do |month| + next unless File.directory? month + Dir.chdir(month) do + next unless File.exists?('arctxt') + files_b = nil + dest_month_dir = [destbase,month].join('/') + if !File.exists?(dest_month_dir) + cmd "cp -avi #{Dir.pwd} #{dest_month_dir}" + next + end + Dir.chdir(dest_month_dir) do + File.rename('arctxt', 'arctxt-old') if (File.exists?('arctxt') and !File.exists?('arctxt-old')) + Dir.mkdir('arctxt') unless File.exists?('arctxt') + files_b = build_file_hash( [Dir.pwd, 'arctxt-old','*'].join('/') ) + end + files_a = build_file_hash( [Dir.pwd, 'arctxt','*'].join('/') ) +# puts files_a.inspect +# puts files_b.inspect + merged_files = merge(files_a, files_b) + Dir.chdir('arctxt') do + merged_files.each_with_index do |source_file_path, dest_file| + dest_file_path = [destbase,month,'arctxt',dest_file+1].join('/') + unless File.exists?(dest_file_path) + cmd "cp -avi #{source_file_path} #{dest_file_path}" + end + end + end + end + end +end + +def randomize(array) + array.sort{|a,b| rand(3)-1} +end + +completed_count = 0 +Dir.chdir(source) do + randomize(Dir['*']).each do |listdir| + next unless File.directory? listdir + Dir.chdir(listdir) do + merge_arctext_to( [dest, listdir].join('/') ) + puts "COMPLETED %s" % (completed_count+=1) + end + end +end diff --git a/tools/missingkeyfix.py b/tools/missingkeyfix.py new file mode 100644 index 0000000000000000000000000000000000000000..81bb5514fff9657fb9414510cd403a9c4dd1591f --- /dev/null +++ b/tools/missingkeyfix.py @@ -0,0 +1,81 @@ +#!/usr/bin/python + +import sys,os,glob +import re + +usage = "usage: %s <listdir>" % os.path.basename(sys.argv[0]) + +if len(sys.argv) < 2: + print usage + sys.exit(-1) + +listdir = sys.argv[1] +buf = "" +needmail = 0 +hasmail = 0 +not_ok = 0 + +empty = re.compile(r"^[\t \n]+$") +ismail = re.compile(r".*email .*@.") +param = re.compile(r"^(owner|editor) *$") + +for listconfig in glob.glob(listdir + '/config'): + print "file %s" % listconfig + buf = "" + needmail = 0 + hasmail = 0 + not_ok = 0 + + # Create a file to work with, will be later renamed as the config + # if there were changes that were made + new_config_name = "%s_tmp" % listconfig + new_config = open(new_config_name, 'w') + + # Start stepping through the config file + #for line in xreadlines.xreadlines(open(listconfig)): + fh = open(listconfig) + for line in fh: + buf = buf + line + + if empty.match(line): + if needmail == 1 and hasmail == 0: + sys.stderr.write("Not ok1: %s \n--------\n%s---------\n" % (listconfig, buf)) + not_ok = 1 + else: + new_config.write(buf) + + # init for next paragraph + needmail = 0 + hasmail = 0 + buf = "" + + elif param.match(line): + needmail = 1 # need to have an email section somewhere + + elif ismail.match(line): + hasmail = 1 + + else: + # nothing special + pass + + if needmail == 1 and hasmail == 0: + sys.stderr.write("Not ok2: %s \n--------\n%s---------\n" % (listconfig, buf)) + not_ok = 1 + else: + new_config.write(buf) + + new_config.flush() + new_config.close() + + # If there was a problem, so we need to take the corrected config file + # and put it in the right place after backing up the existing one + if not_ok: + # Backup the config file, just in case + os.system('cp %s %s_bak.keyfix' % (listconfig, listconfig)) + # Rename the temporary file to the perm config + os.rename(new_config_name,listconfig) + + # Everything was fine with the config file, clean up and go home + else: + os.remove(new_config_name) diff --git a/tools/nukelist b/tools/nukelist new file mode 100755 index 0000000000000000000000000000000000000000..d1bff84addab683580efff9f8c3e451c10403484 --- /dev/null +++ b/tools/nukelist @@ -0,0 +1,21 @@ +#!/bin/bash +# nukelist - removes all traces of a list from the db +# WARNING: it's much better to use 'sympa.pl --close_list=LIST' if you can, +# this script is only for cleaning things up when sympa isn't able to close +# NOTE: this script requires the current user has write access to the db + +LIST=${BASH_ARGV[*]} +echo "removing $LIST:" + +echo "removing admins..." +mysql --batch --database=sympa --execute "delete from admin_table where list_admin='$LIST';" +echo "removing subscribers..." +mysql --batch --database=sympa --execute "delete from subscriber_table where list_subscriber='$LIST';" +echo "removing pending messages..." +mysql --batch --database=sympa --execute "delete from bulkmailer_table where listname_bulkmailer='$LIST';" +echo "removing logs..." +mysql --batch --database=sympa --execute "delete from logs_table where list_logs='$LIST';" +echo "removing tickets..." +mysql --batch --database=sympa --execute "delete from one_time_ticket_table where data_one_time_ticket like '%/$LIST';" +echo "removing list..." +mysql --batch --database=sympa --execute "delete from list_table where name_list='$LIST';" diff --git a/tools/nukeuser b/tools/nukeuser new file mode 100755 index 0000000000000000000000000000000000000000..0d93743d14230943bced6469596932421447e654 --- /dev/null +++ b/tools/nukeuser @@ -0,0 +1,14 @@ +#!/bin/bash +# nukeuser - completely removes a user, use with caution +# NOTE: this script requires the current user has read access to the db + +echo "removing ${BASH_ARGV[*]}:" + +# remove all list subscriptions +mysql --batch --database=sympa --execute "delete from subscriber_table where user_subscriber='${BASH_ARGV[*]}'" + +# remove all adminships +mysql --batch --database=sympa --execute "delete from admin_table where user_admin='${BASH_ARGV[*]}'" + +# remove user +mysql --batch --database=sympa --execute "delete from user_table where email_user='${BASH_ARGV[*]}'" diff --git a/tools/nukeusers b/tools/nukeusers new file mode 100755 index 0000000000000000000000000000000000000000..c8afa841fb2b86802e19a0b9d565c0b66871ff44 --- /dev/null +++ b/tools/nukeusers @@ -0,0 +1,18 @@ +#!/bin/bash +# nukeusers - completely removes a list of user, use with caution +# NOTE: this script requires the current user has write access to the db + +IFS=$'\n' +for address in `cat $1`; +do + echo "removing $address:" + + # remove all list subscriptions + mysql --batch --database=sympa --execute "delete from subscriber_table where user_subscriber='$address'" + + # remove all adminships + mysql --batch --database=sympa --execute "delete from admin_table where user_admin='$address'" + + # remove user + mysql --batch --database=sympa --execute "delete from user_table where email_user='$address'" +done diff --git a/tools/pluckspam.pl b/tools/pluckspam.pl new file mode 100755 index 0000000000000000000000000000000000000000..e4668b36fffa8a58658f320d9bdd04e2ada7b681 --- /dev/null +++ b/tools/pluckspam.pl @@ -0,0 +1,261 @@ +#!/usr/bin/perl + +############################################## +# pluckspam.pl - rhymes with what? +# process spam complaints +# +# usage: cat <an aol spam complaint email> | perl pluckspam.pl +# +# Status +# 1) find list name - done +# 2) find user's email address - done +# 3) unsubscribe user - done +# a) record complainer - done +# 4) record complaint against list - done +# 5) return error code. 0 means action required, >0 means action taken +# +################################################ + +use strict; + +my ($re_list_header, $re_reminder_mailto, $re_reminder_subject, $re_welcome_subject, $re_welcome_email, $re_subscribe_subject, $re_spam_report_subject, $re_subject); +my ($line, $subject, $listmatch, $emailmatch); +my ($result_code, $remove_user_string, $complainer, $list); +my ($complaints, $log, $archivedir, $archivefile); +my (@sortedlines); +my ($Second, $Minute, $Hour, $Day, $Month, $Year, $WeekDay, $DayOfYear, $IsDST); +my ($tempsubject, $result); + +################################################ + +# configuration + +my $debug = 0; + +# filenames +$complaints = "/home/sympa/tools/data/spam_list_complaints"; +$log = "/home/sympa/tools/data/spam_complaint_log"; +$archivedir = '/var/spool/spamreports/'; + + +# regular expressions + +$re_list_header = qr/List-Post\:\s\<mailto\:([A-Z0-9._%-]+)@[A-Z0-9._%-]+\.[A-Z]{2,4}\>\s*$/i; +$re_reminder_subject = qr/^Subject\: subscription reminder: (.*)\s*$/i; +$re_welcome_subject = qr/^Subject\: Welcome (?:is|to|in) list (.*)\s*$/i; +$re_subscribe_subject = qr/^Subject\: auth (?:\w)* subscribe (.*)\s*$/i; + +$re_reminder_mailto = qr/^\s*mailto:[A-Z0-9._%-]+\@[A-Z0-9._%-]+\.[A-Z]{2,4}\?subject\=sig\%20[A-Z0-9._%-]+\%20([A-Z0-9._%-]+\@[A-Z0-9._%-]+\.[A-Z]{2,4})\s*$/i; +$re_welcome_email = qr/^Your subscription email is ([A-Z0-9._%-]+\@[A-Z0-9._%-]+\.[A-Z]{2,4})\s*$/i; + +$re_subject = qr/^Subject\:\s(.*)\s*$/i; + +# don't use () in this regex to return a substring +$re_spam_report_subject = qr/^Subject\: .*Client TOS Notification\s*$/i; + +################################################ + +# initialize some variables +$listmatch = 0; +$emailmatch = 0; +$complainer = ""; +$list = ""; +$subject = ""; +$tempsubject = ""; + +################################################ + +# begin + +($Second, $Minute, $Hour, $Day, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime(time); +$Month += 1; +$Month = '0' . $Month if length($Month) < 2; +$Day = '0' . $Day if length($Day) < 2; +$archivefile = "$archivedir$Month$Day-$$.eml"; + +open(LOG,">>$log") or print STDOUT "**** Unable to open $log for append: $!\n" && die; +flock(LOG, 2) or print LOG "**** Unable to exclusive-write lock $log: $!"; # don't die + +open(ARCHIVE,">$archivefile") or print LOG "**** Unable to write $archivefile: $!\n" && die; + +# read in email messaage +LINE: while(<STDIN>){ + + print ARCHIVE $_; + + if ($listmatch + $emailmatch == 3) { + print ARCHIVE "\n\n $0 FOUND BOTH USER AND LIST SO IT TRUNCATED THIS EMAIL"; + goto ENDINPUT; + } + + if ($_ =~ /$re_subject/) { + + # this is subject header + $tempsubject = $1; + + # quit if first subject header is not a spam report + if (length($subject) == 0 && $_ !~ /$re_spam_report_subject/) { + + # probably not an actual complaint email + $subject = $tempsubject; + print LOG "**** Ignored AOL email: $subject\n"; + print ARCHIVE "\n\n $0 DETERMINED THIS IS AN AOL MESSAGE SO IT TRUNCATED THIS EMAIL\n"; + goto ENDINPUT; + + } else { + + # set subject header for logfile + $subject = $tempsubject; + $tempsubject = ""; + + } + } + + # test for listname + goto EMAIL if $listmatch == 1; + if ( + $_ =~ /$re_list_header/ || + $_ =~ /$re_welcome_subject/ || + $_ =~ /$re_reminder_subject/ || + $_ =~ /$re_subscribe_subject/ + ) { + + # reg expressions should reference list with $1 + $list = $1; + $listmatch = 1; + } + +EMAIL: next LINE if $emailmatch == 2; + # test for reminder email + if ($_ =~ /$re_reminder_mailto/ || $_ =~ /$re_welcome_email/) { + + # reg expressions should reference email with $1 + $complainer = $1; + $emailmatch = 2; + } +} + +close(ARCHIVE); + + +ENDINPUT: + +$subject = substr($subject, 0, 20); +print STDOUT "\nEmail: $complainer List: $list Subject: $subject\n" if $debug; + +# listmatch = 1, emailmatch = 2 +$result_code = eval($emailmatch + $listmatch); + +for (($subject, $list, $complainer)) { + s/^\s+//; + s/\s+$//; +} + +if ($result_code == 0) { + if (length($subject) < 1 ) { + logit("No email, list or subject found."); + } else { + logit("No email or list found."); + } +} +elsif ($result_code == 1) { + # found a list + update_complaints($list); + logit("Added complaint for $list."); +} +elsif ($result_code == 2) { + # found a complainer but no list. + # remove from all lists. + $remove_user_string = "bash /home/sympa/tools/remove_user $complainer ALL"; + + if ($result = system $remove_user_string) { + logit("Removed $complainer from ALL lists."); + } + else { + logit("hmm.. system call \'$remove_user_string\' exited with $result."); + } +} +elsif ($result_code == 3) { + # found both a complainer and a list + $remove_user_string = "bash /home/sympa/tools/remove_user $complainer $list"; + + if ($result = system $remove_user_string) { + logit("Removed $complainer from $list."); + } + else { + logit("hmm.. system call \'$remove_user_string\' exited with $result."); + } +} + +close(LOG); + + +################################################ +# end program +################################################ + + +################################################ +# subroutines +################################################ + +################################################ +sub logit() { + + # log return value for match: 0 none, 1 list, 2 user, 3 list and user + print LOG "$Month$Day-$$: $result_code : $_[0] : $subject\n"; +} +################################################ + + +################################################ +sub update_complaints { + + # subroutine accepts one list name as a parameter + my $list = shift; + + for ($list) { + s/^\s+//; + s/\s+$//; + } + + my $count = 0; + my ($line, @lines); + + # read complaint tally file + if (-e $complaints) { + open(C, $complaints) or print LOG "**** Unable to open $complaints for reading: $!" && die; + flock(C, 1) or print LOG "**** Unable to shared-read lock $complaints: $!" && die; + while(<C>) { + push @lines, $_; + } + close(C); + } + + # sort tally file + @sortedlines = sort { $b <=> $a } @lines; + + # write complaints tally file + open(COMPLAINTS, "> $complaints") or print LOG "**** Unable to open $complaints for writing: $!" && die; + flock(COMPLAINTS, 2) or print LOG "**** Unable to exclusive-write lock $complaints: $!" && die; + foreach $line (@sortedlines) { + if ($line =~ /^(\d+)\s$list\s*$/) { + + # get current tally + $count = $1; + + # overwrite, with incremented tally + print COMPLAINTS ++$count . " " . $list . "\n"; + + } else { + # write unmodified line back into file + print COMPLAINTS $line; + } + } + if ($count < 1) { + # did not find listname in tally file + print COMPLAINTS ++$count . " " . $list . "\n"; + } + close(COMPLAINTS); +} +################################################ diff --git a/tools/pluckspam.pl.old b/tools/pluckspam.pl.old new file mode 100644 index 0000000000000000000000000000000000000000..cb4df5aa61123bb82aa135f5f3274d19c0a6f6fd --- /dev/null +++ b/tools/pluckspam.pl.old @@ -0,0 +1,261 @@ +#!/usr/bin/perl + +############################################## +# pluckspam.pl - rhymes with what? +# process spam complaints +# +# usage: pluckaol.pl <an aol spam complaint email> +# +# Status +# 1) find list name - done +# 2) find user's email address - done +# 3) unsubscribe user - TODO: not done +# a) record complainer - done +# 4) record complaint against list - done +# 5) return error code. 0 == action required, >0 == action taken +# +################################################ + +use strict; + +my ($re_list_header, $re_reminder_mailto, $re_reminder_subject, $re_welcome_subject, $re_welcome_email, $re_subscribe_subject, $re_spam_report_subject); +my ($log, $line, $subject, $listmatch, $emailmatch); +my ($complainer, $list, $complaints, $complainers, $result_code, $remove_user_string); +my (@sortedlines); +my $tempsubject; # a regretable hack + +################################################ + +# configuration + +my $debug = 0; + +# filenames +$complaints = "list_complaints"; +$log = "spam_complaint_log"; + +$complainers = "complainers"; # currently unused + + +# regular expressions + +$re_list_header = 'List-Post\:\s\<mailto\:([A-Z0-9._%-]+)@[A-Z0-9._%-]+\.[A-Z]{2,4}\>\s*$'; +$re_reminder_subject = '^Subject\: subscription reminder: (.*)\s*$'; +$re_welcome_subject = '^Subject\: Welcome (?:is|in) list (.*)\s*$'; +$re_subscribe_subject = '^Subject\: auth (?:\w)* subscribe (.*)\s*$'; + +$re_reminder_mailto = '^\s*mailto:[A-Z0-9._%-]+\@[A-Z0-9._%-]+\.[A-Z]{2,4}\?subject\=sig\%20[A-Z0-9._%-]+\%20([A-Z0-9._%-]+\@[A-Z0-9._%-]+\.[A-Z]{2,4})\s*$'; +$re_welcome_email = '^Your subscription email is ([A-Z0-9._%-]+\@[A-Z0-9._%-]+\.[A-Z]{2,4})\s*$'; + +# don't use () in this regex to return a substring +$re_spam_report_subject = '^Subject\: Client TOS Notification\s*$'; + +################################################ + +# initialize some variables +$listmatch = 0; +$emailmatch = 0; +$complainer = ""; +$list = ""; +$subject = ""; +$tempsubject = ""; + +################################################ + +sub update_complaints { + + # subroutine accepts one list name as a parameter + my $list = shift; + + for ($list) { + s/^\s+//; + s/\s+$//; + } + + my $count = 0; + my ($line, @lines); + + # read complaint tally file + if (-e $complaints) { + open(C, $complaints) or print LOG "**** Unable to open $complaints for reading: $!" && die; + flock(C, 1) or print LOG "**** Unable to shared-read lock $complaints: $!" && die; + while(<C>) { + push @lines, $_; + } + close(C); + } + + # sort tally file + @sortedlines = sort { $b <=> $a } @lines; + + # write complaints tally file + open(COMPLAINTS, "> $complaints") or print "**** Unable to open $complaints for writing: $!" && die; + flock(COMPLAINTS, 2) or print LOG "**** Unable to exclusive-write lock $complaints: $!" && die; + foreach $line (@sortedlines) { + if ($line =~ /^(\d+)\s$list\s*$/) { + + # get current tally + $count = $1; + + # overwrite, with incremented tally + print COMPLAINTS ++$count . " " . $list . "\n"; + + } else { + # write unmodified line back into file + print COMPLAINTS $line; + } + } + if ($count < 1) { + # did not find listname in tally file + print COMPLAINTS ++$count . " " . $list . "\n"; + } + close(COMPLAINTS); +} + +################################################ + +################################################ + +sub update_complainers { + + # subroutine accepts one email address as a parameter + my $email = shift; + for ($email) { + s/^\s+//; + s/\s+$//; + } + + my ($line, @lines); + my $writeflag = 0; + + # read complainer file + if (-e $complainers) { + open(C, $complainers) or print LOG "**** Unable to open $complainers for reading: $!" && die; + flock(C, 1) or print LOG "**** Unable to shared-read lock $complainers: $!" && die; + while(<C>) { + push @lines, $_; + } + close(C); + } + + # write complainers file + open(COMPLAINERS, "> $complainers") or print "**** Unable to open $complainers for writing: $!" && die; + flock(COMPLAINERS, 2) or print LOG "**** Unable to exclusive-write lock $complainers: $!" && die; + foreach $line (@lines) { + if ($line =~ /^$email\s*$/) { + + # overwrite to prevent duplicate entries + print COMPLAINERS "$email\n"; + $writeflag++; + } else { + # write unmodified line back into file + print COMPLAINERS $line; + } + } + if ($writeflag == 0) { + # write new complainer + print COMPLAINERS "$email\n"; + } + close(COMPLAINERS); +} + +################################################ + + + +############################################### +############################################### + +# begin + +################################################ + +open(LOG,">>$log") or print LOG "**** Unable to open $log for append: $!\n" && die; +flock(LOG, 2) or print LOG "**** Unable to exclusive-write lock $log: $!"; # don't die + +# read in email messaage +LINE: while(<STDIN>){ + + goto ENDINPUT if $listmatch + $emailmatch == 3; + + if ($_ =~ /^Subject\:\s(.*)\s*$/i) { + + # this is subject header + $tempsubject = $1; + + # quit if first subject header is not a spam report + if (length($subject) == 0 && $_ !~ /$re_spam_report_subject/) { + + # probably not an AOL spam complaint email + $subject = $tempsubject; + print LOG "**** Ignored $subject"; + goto ENDINPUT; + + } else { + + # set subject header for logfile + $subject = $tempsubject; + $tempsubject = ""; + + } + } + + # test for listname + goto EMAIL if $listmatch == 1; + if ( + $_ =~ /$re_list_header/i || + $_ =~ /$re_welcome_subject/i || + $_ =~ /$re_reminder_subject/i || + $_ =~ /$re_subscribe_subject/i + ) { + + # reg expressions should reference list with $1 + $list = $1; + $listmatch = 1; + } + +EMAIL: next LINE if $emailmatch == 2; + # test for reminder email + if ($_ =~ /$re_reminder_mailto/i || $_ =~ /$re_welcome_email/i) { + + # reg expressions should reference email with $1 + $complainer = $1; + $emailmatch = 2; + } +} + +if ($emailmatch + $listmatch < 1) { + print LOG "$subject\n"; +} + +ENDINPUT: print STDERR "E:$complainer L:$list S:" . substr($subject, 0, 30) . "\n" if $debug; + +# listmatch = 1, emailmatch = 2, both = 3 +$result_code = eval($emailmatch + $listmatch); + +if ($result_code == 1) { + # found a list + update_complaints($list); +} + +if ($result_code == 2) { + # found a complainer + update_complainers($complainer); + + # $remove_user_string = 'bash /home/sympa/tools/remove_user ' . $complainer . ' ALL'; + # system $remove_user_string; +} + +if ($result_code == 3) { + # found both a complainer and a list + $remove_user_string = 'bash /home/sympa/tools/remove_user ' . $complainer . ' ' . $list; + system $remove_user_string; + + # update_complainers($complainer); + # update_complaints($list); +} + +close(LOG); + +# STDOUT return value for match: 0 none, 1 list, 2 user, 3 list and user +print $result_code; \ No newline at end of file diff --git a/tools/priority/addpriority b/tools/priority/addpriority new file mode 100755 index 0000000000000000000000000000000000000000..26da7a8fea97cb891c4e233ec4ffe3e17f191df1 --- /dev/null +++ b/tools/priority/addpriority @@ -0,0 +1,25 @@ +#!/usr/bin/perl +# addpriority - adds a priority setting to lists that do not already have one +# (and then they get adjusted by the adjustpriority script). This is needed +# because sympa's --set_list_priority option doesn't currently work if the +# list does not have a priority + +$priority='8'; +$sympa='/home/sympa/bin/sympa.pl'; +$expl='/home/sympa/expl'; +$file=$ARGV[0]; + +open(LISTS, "$file") or die "cannot open $file\n"; + +while (<LISTS>) { + chomp; + $list=$_; + + if ( ! `grep -H priority $expl/$list/config` ) { + print "$list: no priority detected setting to $priority\n"; + `echo "priority $priority" >>$expl/$list/config`; + } + +} +# do one reload of the configs at the end +`$sympa --reload_list_config`; diff --git a/tools/priority/adjustpriority b/tools/priority/adjustpriority new file mode 100755 index 0000000000000000000000000000000000000000..67470e2e53c1582cc84366dca6dd851ca0547c80 --- /dev/null +++ b/tools/priority/adjustpriority @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# adjustpriority - split the lists into bins based on subscriber count +# and then set all lists priorities +# NOTE: this script requires the current user has read access to the db +# Matt Taggart <taggart@riseup.net> 2011-07 + +$sympa='/home/sympa/bin/sympa.pl'; +$expl='/home/sympa/expl'; + +# 0,1,9 already have special meanings, 5 is the default priority, so use 2-8 +$bins=7; +$binstart=2; + +# get a list of address and listname pairs for all open lists +$subsql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; +# get a list of all open lists +$listsql='mysql -N --batch --database=sympa --execute "select name_list from list_table where status_list=\'open\'"'; + +open(SUBDUMP, "$subsql|") or die "cannot get dump of address+list pairs from database\n"; +open(LISTDUMP, "$listsql|") or die "cannot get dump of lists from database\n"; + +# init a hash with all lists +while (<LISTDUMP>) { + chomp; + $listcount{$_} = 0; +} + +# increment the counts +while (<SUBDUMP>) { + chomp; + m/^(.*)\t.*?\@(.*?)$/; + # keep a count of the addresses per list + $listcount{$1}++; +} + +$numlists = keys %listcount; +# we add one to ensure $bins * $binsize > $numlists +$binsize = int($numlists / $bins) + 1; + +print "### Lists: $numlists Bins: $bins Lists per Bin: ~$binsize\n"; + +$i=$binstart; +$j=0; + +print "### bin $binstart ###\n"; +foreach $list ( sort { $listcount{$a} <=> $listcount{$b} } keys %listcount) { + if ( $j < $binsize ) { + $current=`grep priority $expl/$list/config |cut -f2 -d' '`; + chomp $current; + # only adjust if priority is set and not the same as current + if ( $current && $current != $i ) { + print "$list: adjusting priority from $current to $i\n"; + # put the thing to set the priority here + #`$sympa --set_list_priority --list=$list --robot=lists.riseup.net --priority=$i`; + } + $j++; + next; + } + # reset the binsize counter + $j=0; + + if ( $i > ( $binstart + $bins ) ) { + print "ERROR: we ran out of bins\n"; + exit 1; + } + + $i++; + print "### bin ".$i." ###\n"; +} + diff --git a/tools/rebuildarchives.rb b/tools/rebuildarchives.rb new file mode 100755 index 0000000000000000000000000000000000000000..35de3c138271b2f510d8c716da43adcac1a36c5a --- /dev/null +++ b/tools/rebuildarchives.rb @@ -0,0 +1,66 @@ +#!/usr/bin/ruby +require 'fileutils' + +# +# rebuildarchives.rb +# +# This is a little script to force the rebuilding of +# archives slowly... so that we can rebuild the archives +# without freaking out the system. +# +# + +########### configuration ####################### + +$chunksize = 10 # how many to rebuild at a time, if zero, do them all +$sleeptime = 10 # seconds to sleep +$arcdir = "/home/sympa/arc" +$rebuild_spool = "/home/sympa/spool/outgoing" + +################################################# + +def waiting_for_spool_to_process + Dir.glob("#{$rebuild_spool}/.rebuild*").any? +end + +def archive_has_html(arc) + dirglob = "#{$arcdir}/#{arc}/*" + firstdir = Dir.glob(dirglob).first + File.exist?("#{firstdir}/mail1.html") +end + +def process_chunk(chunk) + while waiting_for_spool_to_process + #puts 'waiting for archives to rebuild. sleeping...' + putc '.'; STDOUT.flush + sleep $sleeptime + end + chunk.each do |arcname| +# if archive_has_html(arcname) +# puts 'skipping %s...' % arcname +# else + puts "queued #{arcname}" + FileUtils.touch "#{$rebuild_spool}/.rebuild.#{arcname}" +# end + end + puts 'finished chunk' +end + +archives = Dir.entries($arcdir) - ['.','..'] +archives.sort! {|a,b|rand(3)-1} + +if $chunksize == 0 + process_chunk archives +else + count = archives.size + chunks = count/$chunksize + (0..chunks).each do |i| + chunk_start = i * $chunksize + chunk_end = chunk_start + ($chunksize-1) + chunk = archives[chunk_start..chunk_end] + process_chunk chunk + end +end + +puts "FINISHED" + diff --git a/tools/remind/remind.task b/tools/remind/remind.task new file mode 100644 index 0000000000000000000000000000000000000000..17a6ba9de2fcae6669879cf1bb6013a71a26bf49 --- /dev/null +++ b/tools/remind/remind.task @@ -0,0 +1,11 @@ +title.gettext remind message sent to subscribers once + +/INIT + +/EXEC +# couldn't get aol specific to work with +#@selection = select_subs (match([% user.email %], /lackof\.org\$/)) +#@selection = select_subs (match([user.email], /lackof\.org\$/)) +@selection = select_subs (older([user.email])) +send_msg (@selection, remind) +stop() diff --git a/tools/remind/remindnow b/tools/remind/remindnow new file mode 100755 index 0000000000000000000000000000000000000000..6d8902356315f5ef60a2889b2355f6eec3829308 --- /dev/null +++ b/tools/remind/remindnow @@ -0,0 +1,14 @@ +#!/bin/sh + +# forces an immediate remind task for a particular list. +# must be run as user sympa +# +# usage: +# remindnow <listname> +# +if [ -z $1 ]; then + echo "usage: remindnow listname"; + exit 1 +fi + +cp remind.task /home/sympa/spool/task/`date +%s`.INIT.remind.$1 diff --git a/tools/remove_user b/tools/remove_user new file mode 100755 index 0000000000000000000000000000000000000000..78c7c92fbfbb8be35f383c052498c18ceb856e58 --- /dev/null +++ b/tools/remove_user @@ -0,0 +1,56 @@ +#!/bin/sh +# removeuser - remove a user from a list (or ALL lists) +# NOTE: this script requires the current user has write access to the db + +if [ $# -lt 2 ]; then + echo "Usage: remove_user email@address.here list_name" + echo "example: remove_user activist@riseup.net test" + echo " (special listname 'ALL' can be used to unsubscribe user from all lists) " + exit 1 +fi + +if [ "$2" == "ALL" ]; then + LISTS=`mysql -s --batch --database=sympa \ + --execute "select list_subscriber from subscriber_table where user_subscriber='$1'";` + echo "removing $1 from:" + echo "$LISTS" + mysql --batch --database=sympa --execute "delete from subscriber_table where user_subscriber='$1'" + echo -n "removing account from system completely in 5 seconds " + sleep 1 + echo -n "." + sleep 1 + echo -n "." + sleep 1 + echo -n "." + sleep 1 + echo -n "." + sleep 1 + echo "." + mysql --batch --database=sympa --execute "delete from user_table where email_user='$1'" + echo "done" +else + # First see if the user actually is a member of that list + + USER=`mysql -s --batch --database=sympa \ + --execute "select user_subscriber from subscriber_table where \ + user_subscriber='$1' and list_subscriber='$2'";` + + LIST=`mysql -s --batch --database=sympa \ + --execute "select list_subscriber from subscriber_table where \ + user_subscriber='$1' and list_subscriber='$2'";` + + if [ "$1" = "$USER" -a $2 = "$LIST" ] + then + echo "Found: $USER subscribed to $LIST" + echo -n "Removing.... " + + mysql --batch --database=sympa --execute \ + "delete from subscriber_table where user_subscriber='$1' \ + and list_subscriber='$2'"; + + echo "done." + else + echo "$1 was not found to be subscribed to $2!" + exit 1 + fi +fi diff --git a/tools/sanity-check b/tools/sanity-check new file mode 100755 index 0000000000000000000000000000000000000000..3d8cdc6ef5ec650e8f510df2e552829d9d602eef --- /dev/null +++ b/tools/sanity-check @@ -0,0 +1,23 @@ +#!/usr/bin/ruby + +source = '/crypt/sympa/arc' + +def randomize(array) + array.sort{|a,b| rand(3)-1} +end + +completed_count = 0 +Dir.chdir(source) do + randomize(Dir['*']).each do |listdir| + next unless File.directory? listdir + putc '.'; STDOUT.flush + Dir.chdir(listdir) do + Dir['*'].each do |month| + next unless File.directory? month + Dir.chdir(month) do + puts "TROUBLE!!! #{Dir.pwd}" if Dir['arctxt-old/*'].any? and !Dir['arctxt/*'].any? + end + end + end + end +end diff --git a/tools/stats/counts b/tools/stats/counts new file mode 100755 index 0000000000000000000000000000000000000000..cac67d3387c9f77f727a44cda9a74d8ae435cc07 --- /dev/null +++ b/tools/stats/counts @@ -0,0 +1,68 @@ +#!/usr/bin/perl +# counts - list, subscription, user counts +# NOTE: this script requires the current user has read access to the db and expl + +$symparoot='/home/sympa'; + +# get list of open lists +$listssql='mysql --batch --database=sympa --skip-column-names --execute "select name_list from list_table where status_list = \'open\'"'; +open(LISTS, "$listssql|") or die "cannot get dump of open lists from database\n"; + +$lists=0; +$visible=0; + +# using that list, determine which are visible +while (<LISTS>) { + chomp; + $list=$_; + + $lists++; + + open(CONFIG, "$symparoot/expl/$list/config") or warn "cannot open config for $list\n"; + -f CONFIG and sysread CONFIG, my $_, -s CONFIG; + + $found=0; + + # count it if it's set to anyone + if ( /\n\n^ visibility anyone/m ) { + #print "$list is set to anyone\n"; + $visible++; + } + # if visibility is set make a note + if ( /\n\n^visibility/m ) { + #print "$list is set to something\n"; + $found++; + } + + if ( ! $found ) { + #print "not found\n"; + $visible++; + } + close(CONFIG); +} + +close(LISTS); + +# get count of subscriptions to open lists +$sub=`mysql -N --batch --database=sympa --execute "select count(user_subscriber) from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"`; +chomp($sub); + +# get user count (no need to check for open, tasks clean up users that aren't +# subscribed to a list) +$users=`mysql --batch --database=sympa --skip-column-names --execute "select count(email_user) from user_table"`; +chomp($users); + + +print "Lists: ". commify($lists) . "(" . commify($visible) . " visible)"; +print " Subscriptions: " . commify($sub); +print " Users: " . commify($users); +if ( $ARGV[0] eq '-h' ) { + print "<br>"; +} +print "\n"; + +sub commify { +local $_ = shift; +1 while s/^([-+]?\d+)(\d{3})/$1,$2/; +return $_; +} diff --git a/tools/stats/topdomains b/tools/stats/topdomains new file mode 100755 index 0000000000000000000000000000000000000000..c37edddf758a21c9278e1b6eb35aac207c1ecbf7 --- /dev/null +++ b/tools/stats/topdomains @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# topdomains - list the top 25 domains by user count, +# also lists the total users and unique domains +# NOTE: this script doesn't check the validity of addresses or domains +# so the count might include them if those haven't been cleaned up +# NOTE: this script requires the current user has read access to the db + +use vars qw($rundump %domains %count $key $percent); + +$rundump='mysql --batch --database=sympa --skip-column-names --execute \ + "select email_user from user_table"'; + +open(LIST,"$rundump|") or die "Cannot get addresses from sympa db\n"; + +while (<LIST>) { + # because we have bogus addresses, this regex doesn't always match, so if it + if ( m/@(.*)>?$/ ) { + $domains{$1}++; + $count++; + }; +} + +$dcount = scalar keys %domains; + + +format Plain = +@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<... @>>>>>>> (@#.##%) +$key, $domains{$key}, $percent +. + +format Html = +<tr><td>@*</td><td align=right>@*</td><td align=right>@#.##%</td> + $key, $domains{$key}, $percent +. + +if ( $ARGV[0] eq '-h' ) { + $~='Html'; + print "<style>table.single{border: 1px solid;border-collapse: collapse;}\n.single td, .single th{border-width: 1px 1px 1px 1px;border-style: solid;}\n</style>\n"; + print "<h3>Top 25 domains by users</h3>\n"; + print "Total users: ".$count." Total domains: ". $dcount ."<br>\n"; + print "(<i>generated ".`date`."</i>)<br>\n"; + print "<table class=\"single\">\n"; + print "<tr><th align=center>Domain</th><th align=center>Users</th><th>\% of total</th></tr>\n"; +} else { + print "Top 25 domains by users\n"; + print "Total users: ".$count." Total domains: ". $dcount ."\n"; + print "(generated ".`date`.")\n"; + print "Domain: Users (\% of total)\n"; + $~='Plain'; +} + +foreach $key ((sort { $domains{$b} <=> $domains{$a} } keys %domains)[0..24]) { + $percent=$domains{$key}/$count*100; + write; +} + +if ( $ARGV[0] eq '-h' ) { + print "</table>\n"; +} + diff --git a/tools/stats/toplists b/tools/stats/toplists new file mode 100755 index 0000000000000000000000000000000000000000..ee188c894f67ce7f189f554aeb878d120f7c2627 --- /dev/null +++ b/tools/stats/toplists @@ -0,0 +1,63 @@ +#!/usr/bin/perl +# toplists - top $num lists and their subscriber count, sorted +# descending by count +# NOTE: this script requires the current user has read access to the db + +$num=25; +$date=`date`; +chomp($date); + +$sql=qq(mysql --batch --database=sympa --skip-column-names --execute "SELECT subscriber_table.list_subscriber AS listname, count(subscriber_table.list_subscriber) AS subscribers FROM subscriber_table, list_table where subscriber_table.list_subscriber=list_table.name_list and list_table.status_list='open' GROUP BY subscriber_table.list_subscriber ORDER BY subscribers DESC LIMIT $num;"); + +open(COUNTS, "$sql|") or die "cannot get subscriber counts from database\n"; + +format Wiki = +|[@*->https://lists.riseup.net/www/info/@*]|@*| + $list, $list,$counts{$list} +. + +format Plain = +@* @* +$list, $counts{$list} +. + +format Html = +<tr><td><a href="https://lists.riseup.net/www/info/@*">@*</a></td><td align=right>@*</td></tr> + $list, $list, $counts{$list} +. + +format Pcre = +/@(bounce\+.*==)?@*(-owner)?@lists\.riseup\.net$/ [bigoutmx.riseup.net] +"^", $list, "@" +. + +if ( $ARGV[0] eq '-w' ) { + $~='Wiki'; + print "h3. Top $num lists by size\n\n"; + print "(generated ".$date.")\n\n"; + print "|_.List name|_.Subscribers|\n"; +} elsif ($ARGV[0] eq '-h' ) { + $~='Html'; + print "<style>table.single{border: 1px solid;border-collapse: collapse;}\n.single td, .single th{border-width: 1px 1px 1px 1px;border-style: solid;}\n</style>\n"; + print "<h3>Top $num lists by size</h3>\n"; + print "(<i>generated ".$date."</i>)\n"; + print "<table class=\"single\">\n"; + print "<tr><th align=center>List name</th><th align=center>Subscribers</th></tr>\n"; +} elsif ($ARGV[0] eq '-r' ) { + $~='Pcre'; +} else { + $~='Plain'; + print "Top $num lists by size\n"; + print "(generated ".$date.")\n"; +} + + +while (<COUNTS>) { + ($list, $count) = split /\t/; + $counts{$list}=$count; + write; +} + +if ($ARGV[0] eq '-h' ) { + print "</table>\n"; +} diff --git a/tools/stats/topsubs b/tools/stats/topsubs new file mode 100755 index 0000000000000000000000000000000000000000..f004e93785069907e586daf1ad21805274483e18 --- /dev/null +++ b/tools/stats/topsubs @@ -0,0 +1,89 @@ +#!/usr/bin/perl -w +# topsubs - list the subscribers with the most subscriptions and the lists +# they are on. +# NOTE: this script requires the current user has read access to the db +# Matt Taggart <taggart@riseup.net> 2012-10 + +use strict; + +use vars qw($opt_h $num $date $subscriberssql $size $lists $text + $count $address $list %subscribers ); + +# number we want to see +$num = 25; + +use Perl6::Form; +use Getopt::Std; +$Getopt::Std::STANDARD_HELP_VERSION="true"; + +getopts('h'); + +sub HELP_MESSAGE { + print "Usage: topsubs [-h]\n"; + print " -h: html output\n"; +} + +$date=`date`; +chomp($date); + +$subscriberssql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; +#$subscriberssql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\' limit 10000"'; + +open(SUBSCRIBERS, "$subscriberssql|") or die "cannot get dump of subscribers from database\n"; + +while (<SUBSCRIBERS>) { + # $1 is the list name + # $2 is the subscriber address + # sympa subscriber names might have leading/trailing space and/or <> + # english version of the regexp: + # match the beginning of the line, then non-greedily match everything up to + # the first tab as $1, then maybe some space characters, then maybe a < + # symbol, then match greedily some characters up to maybe a > symbol and + # then the rest of the line + m/^(.*?)\t\s*<?(.*)>?\s*$/; + $list=$1; + $address=$2; + + # load into a hash of arrays + push(@{ $subscribers{$2} },$list); +} + +if ( $opt_h ) { + print "<style>table.single{border: 1px solid;border-collapse: collapse;}\n.single td, .single th{border-width: 1px 1px 1px 1px;border-style: solid;}\n</style>\n"; + print "<h3>Top subscribers</h3>\n"; + print "(<i>generated ".$date."</i>. This data is only to be used for tracking down abusers.)\n\n"; + print "<table class=\"single\">\n"; + print "<tr><th align=right>Count</th><th>Address</th><th>Lists</th></tr>\n"; +} else { + print "Top Subscribers\n"; + print "(generated ".$date.")\n"; + print "Count Address Lists\n"; + print "--------------------------------------------------------------------------------\n"; +} + +$count=0; + +foreach $address ( sort { @{ $subscribers{$b} } <=> @{ $subscribers{$a} } } keys %subscribers) { + # stop when we get to $num + last if $count >= $num; + + $size = $#{ $subscribers{$address} }; + # above is 0 indexed, so add one to the count + $size++; + $lists = join(", ", @{ $subscribers{$address} }); + $text = substr $lists, 0, 36; + if ( $opt_h ) { + print form + "<tr><td>{>+}</td><td>{<+}</td><td>{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}...</td></tr>", + $size, $address, $text; + } else { + print form + " {>>} {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}...", + $size, $address, $text; + } + $count++; +} + +if ( $opt_h ) { + print "</table>\n"; +} diff --git a/tools/stats/topvolume b/tools/stats/topvolume new file mode 100755 index 0000000000000000000000000000000000000000..39c4488dd51b8545ed5473cc2cd7582b8ab6a197 --- /dev/null +++ b/tools/stats/topvolume @@ -0,0 +1,97 @@ +#!/usr/bin/perl +# toplists - top $num lists and their volume / size, sorted descending by volume +# NOTE: this script requires the current user has read access to the db and arc/ + +$num=25; +$arc='/home/sympa/arc'; + +$date=`date`; +chomp($date); +$lastmonth=`date +%Y-%m -d'last month'`; +chomp($lastmonth); + +$subscribersql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; +#subscribersql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\' limit 100000"'; +#$subscribersql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table"'; + +open(SQL, "$subscribersql|") or die "cannot get subscriber data from database\n"; + +format Wiki = +|[@*->https://lists.riseup.net/www/info/@*]|[@*->https://lists.riseup.net/www/arc/@*]|[@*->https://lists.riseup.net/www/review/@*]| + $list, $list, $volume, $list, $subscribers, $list +. + +format Plain = +@>>>>>> @>>>>> @* +$volume, $subscribers, $list +. + +format Html = +<tr><td><a href="https://lists.riseup.net/www/info/@*">@*</a></td><td align=right><a href=https://lists.riseup.net/www/arc/">@*</a></td><td><a href=https://lists.riseup.net/www/review/">@*</a></td></tr> + $list, $list, $list, $volume, $list, $subscribers +. + +format Pcre = +/@(bounce\+.*==)?@*(-owner)?@lists\.riseup\.net$/ [10.0.1.44] +"^", $list, "@" +. + +if ( $ARGV[0] eq '-w' ) { + $~='Wiki'; + print "h3. Top $num lists by monthly volume\n\n"; + print "(generated ".$date.")\n\n"; + print "|_.List name|_.Volume|_.Subscribers|\n"; +} elsif ($ARGV[0] eq '-h' ) { + $~='Html'; + print "<style>table.single{border: 1px solid;border-collapse: collapse;}\n.single td, .single th{border-width: 1px 1px 1px 1px;border-style: solid;}\n</style>\n"; + print "<h3>Top $num lists by monthly volume</h3>\n"; + print "(<i>generated ".$date."</i>)\n"; + print "<table class=\"single\">\n"; + print "<tr><th align=center>List name</th><th align=center>Volume</th><th>Subscribers</th></tr>\n"; +} elsif ($ARGV[0] eq '-r' ) { + $~='Pcre'; +} else { + $~='Plain'; + print "Top $num lists by monthly volume\n"; + print "(generated ".$date.")\n"; + print "Volume Subscribers List name\n"; + print "---------------------------------------------------------\n"; +} + +while (<SQL>) { + chomp; + m/^(.*)\t(.*)$/; + push @{ $lists{$1} },"$2"; +} + +foreach $list ( keys %lists ) { + $listarc="$arc/$list\@lists.riseup.net/$lastmonth/arctxt/"; + #print "listarc is $listarc\n"; + + # if it didn't have an archive last month skip it + next if ( ! -e $listarc ); + + # if we can't open an archive, die since we're probably not running as the + # right user + die "ERROR: cannot open archive (are you the right user?)\n" if ( ! -r $listarc ); + + $msgs=`ls $listarc |wc -l`; + chomp($msgs); + $volume=$msgs*$#{ $lists{$list} }; + $vols{$list}=$volume; +} + +$count=0; + +foreach $list ( sort { $vols{$b} <=> $vols{$a} } keys %vols ) { + last if ( $count > $num ); + $count++; + $subscribers=$#{ $lists{$list} }; + $volume=$vols{$list}; + #print "volume is $volume subscribers is $subscribers\n"; + write; +} + +if ($ARGV[0] eq '-h' ) { + print "</table>\n"; +} diff --git a/tools/testing/README b/tools/testing/README new file mode 100644 index 0000000000000000000000000000000000000000..367faae568cf5ca9daceccee7cdb0cc3c8d941de --- /dev/null +++ b/tools/testing/README @@ -0,0 +1,15 @@ +This directory contains scripts that can be used to create +a sympa environment for testing. + +These scripts do not set up the full environment. They assume +that sympa has been compiled, installed, and configured. They +assume that sympa is in a working state. + +cdSympaEnv.pl: +script to set up and tear down a number of lists and subscribers + +createEmail.pl: +sends emails to a random number of lists + +cSympaEnvNoAPI.pl: +subscribers users to lists using the database diff --git a/tools/cSympaEnvNoAPI.pl b/tools/testing/cSympaEnvNoAPI.pl similarity index 100% rename from tools/cSympaEnvNoAPI.pl rename to tools/testing/cSympaEnvNoAPI.pl diff --git a/tools/cdSympaEnv.pl b/tools/testing/cdSympaEnv.pl similarity index 98% rename from tools/cdSympaEnv.pl rename to tools/testing/cdSympaEnv.pl index fe2569c2fd1252b761c83710af8c9558a0cda436..3c7f41d46dd59ad863a8a89aaae6fc31c73e48c8 100755 --- a/tools/cdSympaEnv.pl +++ b/tools/testing/cdSympaEnv.pl @@ -15,9 +15,9 @@ # Which will remove all lists from a system, and delete all the users with the # domain testdomain.com. # -# It should be noted that in it's default configuration sympa stores info for lists -# on the filesystem, so attempting to create or delete a large number of lists -# could take a long time. +# It should be noted that in it's default configuration sympa stores info for +# lists on the filesystem, so attempting to create or delete a large number +# of lists could take a long time. $ENV{'PATH'} = ''; ## Load Sympa.conf diff --git a/tools/createEmail.pl b/tools/testing/createEmail.pl similarity index 100% rename from tools/createEmail.pl rename to tools/testing/createEmail.pl diff --git a/tools/testing/make_many_fake_lists/README b/tools/testing/make_many_fake_lists/README new file mode 100644 index 0000000000000000000000000000000000000000..7745ee977068532cb9851e1a975ba05448d2868c --- /dev/null +++ b/tools/testing/make_many_fake_lists/README @@ -0,0 +1,14 @@ +This script will create many fake mailing lists for sympa. + +Usage +-------------------------------------------------------------- + +0. Do *not* rename lists.yml or list_definition.xml.tt2 + +1. Edit lists.yml to define the lists you want to create + +2. If your list data directory is anything other than /home/sympa/list_data: + edit the LIST_DATA constant in create_lists.pl + +2. ./create_lists.pl --help + diff --git a/tools/testing/make_many_fake_lists/create_lists.pl b/tools/testing/make_many_fake_lists/create_lists.pl new file mode 100755 index 0000000000000000000000000000000000000000..d67a4af5dbf9faab8db6205a740eb94d7efe0a07 --- /dev/null +++ b/tools/testing/make_many_fake_lists/create_lists.pl @@ -0,0 +1,292 @@ +#!/usr/bin/perl + +use YAML qw(LoadFile); +use Hash::Util qw(lock_hash); +use Template; +use Getopt::Long; + +use strict; + +## Check options +my %options; +unless (&GetOptions(\%main::options, + 'setup', 'teardown', 'continue', 'nice', 'help' + )) { + die("Unknown options.\n\n".help()); +} + +use constant { + LIST_DEF => "./list_definition.xml.tt2", + LISTS_YAML => "./lists.yml", + TMP_XML => "/tmp/listdef.xml", + SYMPA_PATH => "/home/sympa/bin/sympa.pl", + LIST_DATA => "/home/sympa/list_data" +}; + +check_files() && die("Missing required files. Exiting."); + +if (defined($main::options{'help'})) { + help(); +}elsif (defined($main::options{'refresh'})) { + teardown(); + setup(); +} +elsif (defined($main::options{'teardown'})) { + teardown(); +}elsif (defined($main::options{'setup'})) { + setup(); +} + +sub teardown { + print "Going to delete lists.\n"; + + # Get a list of all lists then delete them. + # for some reason $all_lists is getting populated with a reference to an empty array + # even though get_lists is returning a reference to a populated array + # not sure if something is destroying the objects after get_lists returns or what? + # my $all_lists = List::get_lists('*'); + # so, use an alternate, though inferior, means to get the lists + my $listdata = LIST_DATA; + my @all_lists = `/bin/ls $listdata`; + foreach my $list (@all_lists) { + &remove_list(chomp($list)); + sleep 1 if $main::options{'nice'}; + } + + print "Finished cleaning up installation.\n"; +} + +sub remove_list { + my $list = shift; + + my $cmd = SYMPA_PATH." --purge_list=$list\@foo.com"; + print `$cmd`; + my $sync_cmd = SYMPA_PATH." --sync_list_db --list=$list\@foo.com"; + print `$sync_cmd`; +} + +sub setup { + my $yaml_data = LoadFile(LISTS_YAML); + my $total_lists = 0; + my %defaults = %{$yaml_data->{'defaults'}}; + my $tt = Template->new({RELATIVE => 1}); + my $subscriber_cache = subscriber_cache(); + my @customs; + + lock_hash(%defaults); + + if ($yaml_data->{'total_subscribers'}) { + $subscriber_cache->($yaml_data->{'total_subscribers'}, 1); + } + + if ($yaml_data->{'custom_order'}) { + unless (ref($yaml_data->{'custom_order'}) eq "ARRAY") { + die("The custom_order key in the lists.yml file needs to be an array.\n"); + } + @customs = @{$yaml_data->{'custom_order'}}; + }else { + @customs = keys %{$yaml_data->{'custom_configs'}}; + } + foreach my $custom (@customs) { + unless ($yaml_data->{'custom_configs'}->{$custom}->{'count'} > 0) { + die "The 'count' key is required for custom configs. Missing count for $custom.\n"; + } + my %defaults_copy = %defaults; + foreach my $k ('owners', 'moderators') { + $defaults_copy{$k} = [@{$defaults{$k}}] if (ref($defaults{$k}) eq "ARRAY"); + } + my $created = create_lists( + \%defaults_copy, + $yaml_data->{'custom_configs'}->{$custom}, + $total_lists, + $tt, + $subscriber_cache, + $custom); + print "Created $created lists for $custom\n"; + $total_lists += $created; + } + for (my $i = $total_lists+1; $i <= $yaml_data->{'total_lists'}; $i++) { + my %defaults_copy = %defaults; + foreach my $k ('owners', 'moderators') { + $defaults_copy{$k} = [@{$defaults{$k}}] if (ref($defaults{$k}) eq "ARRAY"); + } + create_list(\%defaults_copy, $i, $tt, $subscriber_cache); + } +} + +sub create_lists { + my %config = %{$_[0]}; + my %custom_config = %{$_[1]}; + my $total_lists = $_[2] +1; + my $tt = $_[3]; + my $subscriber_cache = $_[4]; + my $custom_name = $_[5]; + my $count = 0; + + foreach my $k (keys %custom_config) { + $config{$k} = $custom_config{$k}; + } + + for (my $i=0; $i < $config{'count'}; $i++) { + my $this_listname; + my %config_copy = %config; + foreach my $k ('owners', 'moderators') { + $config_copy{$k} = [@{$config{$k}}] if (ref($config{$k}) eq "ARRAY"); + } + if (create_list(\%config_copy, $total_lists + $i, $tt, $subscriber_cache, $custom_name)) { + $count++; + } + } + unless ($count == $config{'count'}) { + print "WARNING! Only created $count lists but should have created $config{'count'}\n"; + } + return $count; +} + +sub create_list { + my $i = $_[1]; + my %config = interpolate_values_in_hash($_[0], $i); + my $tt = $_[2]; + my $subscriber_cache = $_[3]; + my $custom_name = $_[4] || 'default'; + my $num_subscribers = get_subscriber_count(\%config); + my $exit_code; + + my $listdir = LIST_DATA . "/" . $config{'listname'}; + if (-d $listdir) { + if ($main::options{'continue'}) { + print "Skipping existing list ".$config{'listname'}."\n"; + return 1; + }else { + print "WARNING WARNING! Removing existing list ".$config{'listname'}.". Use the --continue option to preserve existing lists.\n"; + &remove_list($config{'listname'}); + } + } + + open(XML, ">".TMP_XML) || die "Cannot open tmp xml file for writing: $!\n"; + $tt->process(LIST_DEF, \%config, TMP_XML) || die($tt->error()); + close XML; + + $exit_code = system(SYMPA_PATH, "--create_list", "--input_file", TMP_XML, "--robot", "foo.com"); + + if ($exit_code == 0) { + print "created list $config{'listname'} for $custom_name. moderators are: ".((ref($config{'moderators'}) eq "ARRAY") ? join (", ", @{$config{'moderators'}}) : "empty")."\n"; + if ($num_subscribers > 0) { +print "adding $num_subscribers subscribers.\n"; + add_subscribers($config{'listname'}, $subscriber_cache, $num_subscribers); + } + sleep 1 if $main::options{'nice'}; + return 1; + }else { + print STDERR "Error creating list $config{'listname'}. Please check the sympa logs\n"; + return 0; + } +} + +sub get_subscriber_count { + my %config = %{$_[0]}; + my @possible_counts; + + return 0 if $config{'subscribers_max'} == 0; + + # we want a random number in the range between + # $config{'subscribers_min'} and $config{'subscribers_max'} + # since rand() can only count from 0, generate an array of the + # numbers of subscribers, then use rand to pick a random index + + @possible_counts = ($config{'subscribers_min'} .. $config{'subscribers_max'}); + return $possible_counts[int(rand(scalar(@possible_counts)-1))]; +} + +sub add_subscribers { + my $listname = shift; + my $subscriber_cache = shift; + my $count = shift; + my @subscribers = $subscriber_cache->($count); + my $subscriber_string = join("\n", @subscribers); + my $cmd = "echo \"$subscriber_string\" | ".SYMPA_PATH." --import=$listname\@foo.com"; + print `$cmd`; + # just out of curiosity + if ($count <= 10) { + print "Subscribers added: ".join(', ', @subscribers)."\n"; + } +} + +# create a closure to store the subscribers created +sub subscriber_cache { + my @subscribers; + return sub { + my $needed = shift || 0; + my $last_possible_splice_start; + my $splice_start; + + return if $needed == 0; + + while (scalar(@subscribers) < $needed) { + push @subscribers, 'subscriber_'.(scalar(@subscribers)+1).'@foo.com'; + } + + # we want to attempt to not always splice from 0 so that subscriber_0 isn't + # subscribed to every list + if (scalar(@subscribers) > $needed) { + # pick some starting value that is greater than 0 and + # less than the last starting point that would be possible + $last_possible_splice_start = scalar(@subscribers) - $needed - 1; + $splice_start = int(rand($last_possible_splice_start)); + # would use splice() here except that modifies the @subscribers array directly + return @subscribers[$splice_start..($splice_start+($needed-1))] + }else { + # would use splice() here except that modifies the @subscribers array directly + return @subscribers[0..($needed-1)] + } + } +} + +sub interpolate_values_in_hash { + my $config = $_[0]; + my $i = $_[1]; + foreach my $k (keys %{$config}) { + if (ref($config->{$k}) eq "ARRAY") { + for (my $x=0; $x < scalar(@{$config->{$k}}); $x++) { + $config->{$k}->[$x] =~ s/\[% i %\]/$i/g; + } + } + $config->{$k} =~ s/\[% i %\]/$i/g; + } + return %{$config}; +} + +sub check_files { + my $notfound = 0; + foreach my $f (LIST_DEF, LISTS_YAML, LIST_DATA) { + unless (-e $f) { + print STDERR "Required file $f not found."; + $notfound++ && next; + } + unless (-r $f) { + print STDERR "Required file $f found but not readable."; + $notfound++; + } + } + return $notfound; +} + +sub help { + print <<EOF; + +USAGE: ./create_lists.pl --setup|teardown|help [--continue] [--nice] + +required, one of: + --setup create lists as defined in lists.yml + --teardown remove all lists (leaves users) + --refresh runs teardown followed by setup + --help print usage + +optional arguments: + --continue do not overwrite existing lists with the same name. this + allows the script to be stopped and resumed, preserving + the previous work + --nice sleeps 1 after each purge/add of a list + +EOF +} diff --git a/tools/testing/make_many_fake_lists/list_definition.xml.tt2 b/tools/testing/make_many_fake_lists/list_definition.xml.tt2 new file mode 100644 index 0000000000000000000000000000000000000000..e172c33427c4a2ab88056cf0059ce7ec61e3bf67 --- /dev/null +++ b/tools/testing/make_many_fake_lists/list_definition.xml.tt2 @@ -0,0 +1,22 @@ +<?xml version="1.0" ?> + <list> + <listname>[% listname %]</listname> + <type>[% type %]</type> + <subject>[% subject %]</subject> + <description>[% listname %] is a test list</description> + <status>[% status %]</status> + <shared_edit>[% shared_edit %]</shared_edit> + <shared_read>[% shared_read %]</shared_read> + <language>[% language %]</language> + [% FOREACH owner = owners %] + <owner multiple="1"> + <email>[% owner %]</email> + </owner> + [% END %] + [% FOREACH moderator = moderators %] + <editor multiple="1"> + <email>[% moderator %]</email> + </editor> + [% END %] + <topic>[% topic %]</topic> + </list> diff --git a/tools/testing/make_many_fake_lists/lists.yml b/tools/testing/make_many_fake_lists/lists.yml new file mode 100644 index 0000000000000000000000000000000000000000..e21002fc48996a71421043150591fca9fb0d2070 --- /dev/null +++ b/tools/testing/make_many_fake_lists/lists.yml @@ -0,0 +1,73 @@ +# configure the total number of lists to create +total_lists: 17000 +total_subscribers: 1000000 + +# This section defines the defaults that will be used +# unless they are overridden in a custom lists section. +# [% i %] will be replaced by the index in the list creation loop + +defaults: + listname: "list_[% i %]" + # type is any in create_list_templates + type: "discussion_list" + subject: "list_[% i %] subject" + description: "list_[% i %] is a test list." + status: "open" + shared_edit: "editor" + shared_read: "private" + language: "fr" + owners: + - "list_[% i %]_owner@foo.com" + moderators: + # - "list_[% i %]_moderator@foo.com" + # topic should be defined in topics.conf + topic: "computing" + # default range of number of subscribers in a list, + # the number of subscribers will be randomly selected between these numbers. + # can be overriden in custom lists definitions. + subscribers_min: 3 + subscribers_max: 400 + +# create any amount of lists with non-default config options. +# simply indicate the number of lists desired and +# only define the fields to override the defaults. +# the top level keys are used for descriptive output in testing. +custom_order: + - huge_lists + - lists_with_moderators + - closed_lists + - private_working_group_lists + - topic_arts_lists + - pending_lists +custom_configs: + closed_lists: + count: 2000 + status: "closed" + subscribers_min: 100 + pending_lists: + count: 500 + status: "pending" + # use this for no subscribers + subscribers_max: 0 + private_working_group_lists: + count: 4000 + type: "private_working_group" + subscribers_max: 50 + lists_with_moderators: + count: 1000 + moderators: + - "list_[% i %]_moderator1@foo.com" + - "list_[% i %]_moderator2@foo.com" + type: "news-letter" + subscribers_min: 500 + subscribers_max: 1000 + huge_lists: + count: 500 + moderators: + - "list_[% i %]_moderator1@foo.com" + type: "news-letter" + subscribers_min: 4000 + subscribers_max: 5000 + topic_arts_lists: + count: 1000 + topic: "arts" diff --git a/tools/tlsreport b/tools/tlsreport new file mode 100755 index 0000000000000000000000000000000000000000..9f556eccea9ec6f92ebcf5cab458c05916df156c --- /dev/null +++ b/tools/tlsreport @@ -0,0 +1,14 @@ +# +# extracts a list of all the domains which we have established tls connections to or from. +# this list is dumped in /var/log/tls/YYYY-MM-DD.log +# this script is to be run once per day. +# + +zgrep "TLS connection established" /var/log/postfix.log.1.gz | \ +cut -d' ' -f10 | \ +sed -r -e 's/:$//' -e 's/\[.*\]//' \ + -e 's/^.*\.([^\.]*\.[A-Z]{3,4})$/\1/i' \ + -e 's/\.(.*\.[A-Z]{2,3}\.[A-Z]{2})$/\1/i' \ + -e 's/.*\.([0-9A-Z_-]{4,40}\.[A-Z]{2})$/\1/i' | \ +sort > /var/log/tls/`date +%Y-%m-%d`.log + diff --git a/tools/typos/README b/tools/typos/README new file mode 100644 index 0000000000000000000000000000000000000000..9af5a0a4de2ba39ac1a9520562f31190e8db3d5b --- /dev/null +++ b/tools/typos/README @@ -0,0 +1,9 @@ +sympa typo checking scripts +--------------------------- +lists/ - contains files listing common typos domains + +findtypes - returns the list of addresses in the db that match one of the + typo domains and some stats about which lists have a lot of typos and + might be violating our ToS by doing bulk adds of non opt-in addresses. + +mktransport - generates a postfix map for all the typos diff --git a/tools/typos/findtypos b/tools/typos/findtypos new file mode 100755 index 0000000000000000000000000000000000000000..28f6d4abab2e87845be8ed6aaf00678ffd134dff --- /dev/null +++ b/tools/typos/findtypos @@ -0,0 +1,61 @@ +#!/usr/bin/perl -w +# findtypos - find and report addresses with common typos, and list some stats +# NOTE: this script requires the current user has read access to the db + +$listsdir='/home/sympa/tools/typos/lists/'; + +# currently we have files in the lists/ directory that list the typo domains, +# eventually I plan to make these a DNSBL and we can just query it +@lists= qw(aol-owned bt-owned comcast-owned google-owned facebook-owned MS-owned rfc-not rfc-registered riseup rr tiscali-owned verizon-owned wanadoo-owned yahoo-owned); + +# put the typo domains in a hash +foreach $file ( @lists ) { + open(FILE,"$listsdir/$file") or die "Cannot open $file\n"; + while (<FILE>) { + chomp; + $typos{$_} = 1; + } + close FILE; +} + +# get the list and user addresses from sympa (but only for open lists, which is sort of an expensive query, not checking that is way faster) +$subscribersql='mysql -N --batch --database=sympa --execute "select list_subscriber,user_subscriber from subscriber_table, list_table where list_subscriber=list_table.name_list and list_table.status_list=\'open\'"'; + +open(SUBSCRIBERS, "$subscribersql|") or die "cannot get dump of subscribers from database\n"; +open(ADDRESSES, ">addresses") or die "cannot open addresses\n"; +open(BYDOMAIN, ">bydomain") or die "cannot open bydomain\n"; +open(BYLISTC, ">bylistcount") or die "cannot open bylistcount\n"; +open(BYLISTP, ">bylistpercent") or die "cannot open bylistpercent\n"; + +while (<SUBSCRIBERS>) { + # because we have bogus addresses, this regex doesn't always match, use if + if ( m/^(.*?)\t\s*<?(.*\@(.*?))>?\s*$/ ) { + ($list, $address, $domain) = ($1,$2,$3); + $listcount{$list}++; + # if the domain is a typo, add the address to a typo hash + if ( $typos{$domain} ) { + print ADDRESSES "$address\n"; + $domains{$domain}++; + $lists{$list}++; + } + } +} + +foreach $domain ( sort { $domains{$b} <=> $domains{$a} } keys %domains) { + print BYDOMAIN "$domains{$domain} $domain\n"; +} + +foreach $list ( sort { $lists{$b} <=> $lists{$a} } keys %lists) { + $percent{$list} = ( $lists{$list} / $listcount{$list} ) * 100; + printf BYLISTC '%s %s (%.2f%%)', $lists{$list}, $list, $percent{$list}; + print BYLISTC "\n"; +} + +foreach $list ( sort { $percent{$b} <=> $percent{$a} } keys %percent) { + printf BYLISTP '%.2f%% %s (%s)', $percent{$list}, $list, $lists{$list}; + print BYLISTP "\n"; +} + +print "Done. Address list in 'addresses', counts by domain in 'bydomain',\n"; +print " by list count in 'bylistcount', by list percent in 'bylistpercent'\n"; + diff --git a/tools/typos/lists/MS-owned b/tools/typos/lists/MS-owned new file mode 100644 index 0000000000000000000000000000000000000000..53ed6367035301894512c4f5af1f9c50c3ccfb05 --- /dev/null +++ b/tools/typos/lists/MS-owned @@ -0,0 +1,45 @@ +1hotmail.com +aolhotmail.com +ghotmail.com +h0tmail.com +hhotmail.com +hiotmail.com +hoatmail.com +hoimail.com +hootmail.com +hormail.com +hortmail.com +hot6mail.com +hotail.com +hotmaail.com +hotmadil.com +hotmael.com +hotmaial.com +hotmai.com +hotmai.co.uk +hotmaii.com +hotmaiil.com +hotmaikl.com +hotmail.co +hotmail.com.co +hotmaile.com +hotmaill.com +hotmaill.co.uk +hotmail.net +hotmail.org +hotmaiul.com +hotmanil.com +hotmaoil.co.uk +hotmaoil.com +hotmmail.com +hotmnail.com +hotmqil.com +hottmail.com +hotymail.com +hoymail.com +hptmail.com +htomail.com +jotmail.com +ohtmail.com +otmail.com +windwslive.com diff --git a/tools/typos/lists/aol-owned b/tools/typos/lists/aol-owned new file mode 100644 index 0000000000000000000000000000000000000000..d8ce19cc6c35e6c2ed6290ad962e22312bc500bc --- /dev/null +++ b/tools/typos/lists/aol-owned @@ -0,0 +1,3 @@ +aolo.com +aool.com +nestcape.net diff --git a/tools/typos/lists/bt-owned b/tools/typos/lists/bt-owned new file mode 100644 index 0000000000000000000000000000000000000000..25ca7717a6a9d0aad72bdb4433f0fce125d42aed --- /dev/null +++ b/tools/typos/lists/bt-owned @@ -0,0 +1 @@ +btinternet.co.uk diff --git a/tools/typos/lists/comcast-owned b/tools/typos/lists/comcast-owned new file mode 100644 index 0000000000000000000000000000000000000000..63a826dffaa69e8c12c2e935de430dd12964633f --- /dev/null +++ b/tools/typos/lists/comcast-owned @@ -0,0 +1 @@ +comcas.com diff --git a/tools/typos/lists/facebook-owned b/tools/typos/lists/facebook-owned new file mode 100644 index 0000000000000000000000000000000000000000..4758eced333228356e05898ba57e4ec7b5241cae --- /dev/null +++ b/tools/typos/lists/facebook-owned @@ -0,0 +1 @@ +facbook.com diff --git a/tools/typos/lists/google-owned b/tools/typos/lists/google-owned new file mode 100644 index 0000000000000000000000000000000000000000..116a3db06c583717fc4d2f54f4d674e198b6b606 --- /dev/null +++ b/tools/typos/lists/google-owned @@ -0,0 +1,10 @@ +gmaik.com +gamil.de +gmail.ca +gmail.cm +gmail.co +gmail.com.mx +gmail.fr +g-mail.com +googlemail.co.uk +goolemail.com diff --git a/tools/typos/lists/invalid b/tools/typos/lists/invalid new file mode 100644 index 0000000000000000000000000000000000000000..61dc1d8e90727f7623af5c148e258d7c80b30207 --- /dev/null +++ b/tools/typos/lists/invalid @@ -0,0 +1,27 @@ +gmail.c +gmail.cmo +gmail.colm +gmail.coom +gmailc.om +gmail.cvom +gmail.om +gmail.xom +hotmail.c +hotmail..com +hotmail.come +hotmail.com.fr +hotmail.con +hotmail.cpm +hotmail.ocm +hotmail.om +lists.riseup.ne +riseup.ne +riseup.nt +yahoo.coim +yahoo.comn +yahoo.con +yahoo.f +yahoo.ocm +yahoo.om +yahoo.rf +yahoo.vom diff --git a/tools/typos/lists/questionable b/tools/typos/lists/questionable new file mode 100644 index 0000000000000000000000000000000000000000..1749a9395845cbb30f72902805777ef4eba7e47b --- /dev/null +++ b/tools/typos/lists/questionable @@ -0,0 +1,24 @@ +g.mail.com resolves and points to mail.com +gmail.yahoo.com.ar +google.mail.com resolves and points to mail.com +hetmail.com is squatted by a porn squatter +hoo.fr +hotmail.ar is not registered +hotmail.au is not registered +hotmail.mail.com does not resolve +hotmail.pe is not registered +hotmail.tn is not registered +mail.hotmail.com points at MS but suboptimal +rgmail.com is owned by Ruth and Going, Inc. +rockket.mail.com resolves and points to mail.com +themail.com +totmail.com +umail.com +yahoo.com.ar.com.ar doubling is an interesting case +yahoo.mail.com +y.mail.com +general interesting cases +.jpg +.coom +.cmo +.con diff --git a/tools/typos/lists/rfc-not b/tools/typos/lists/rfc-not new file mode 100644 index 0000000000000000000000000000000000000000..99d67c0e79abfd8ef5c7ef5f8bc642828533be22 --- /dev/null +++ b/tools/typos/lists/rfc-not @@ -0,0 +1,81 @@ +54hotmail.com +bt.internet.com +cocketmail.com +gmail.es +gmail.edu +gruposyahoo.com.mx +grupoyahoo.com.ar +gyahoo.ca +hotmaikl.es +hotmail.cm.co +hotmail.com.co.uk +hotmail.com.uk +hotmail-co.uk +hotmailco.uk +hotmail.ec +hotmail.edu +hotmail.it.uk +hotmait.com +hotmal.com.ar +hotmnail.it +hotrail.co.uk +jhotmail.it +laposte.ne +latinmaail.com +latinnail.com +msn.gov +sbcglobal.ne +wandoo.fr +yagoo.com.mx +yaho.es +yahoo.ac.uk +yahoo.ar +yahoo.ar.com +yahoo.br +yahoo.ca.uk +yahoo.cm.au +yahoo.cm.ar +yahoo.co +yahoo.co.ar +yahoo.co.au +yahoo.co.br +yahoo.co.co.uk +yahoo.co.es +yahoo.co.ie +yahoo.com.ax +yahoocom.ar +yahoocom.br +yahoo.com.ca +yahoo.com.co.uk +yahoo.comco.uk +yahoo.com.fr +yahoo.com.in +yahoo.com.it +yahoo.com.jp +yahoo.com.nz +yahoo.com.uk +yahoo.co.mx +yahoo.con.ar +yahoo.coom.ar +yahoo.coo.uk +yahoo.copm.mx +yahoo.co.tw +yahoo.cu.uk +yahoo.edu +yahoo.es.com +yahoo.es.mx +yahoo.groups.com +yahoogroups.com.ar +yahoogroups.com.mx +yahoo.in.co.uk +yahoo.mex.com +yahoo.mx +yahoo.mx.com +yahooo.co.uk +yahoo.om.ar +yahoo.om.com +yahoo.om.mx +yahoooogroups.com +yahoot.com +yahoo.uk +yahoo.uk.co diff --git a/tools/typos/lists/rfc-registered b/tools/typos/lists/rfc-registered new file mode 100644 index 0000000000000000000000000000000000000000..bd600a29e014f43c97bb38257792724c4ea7a5ab --- /dev/null +++ b/tools/typos/lists/rfc-registered @@ -0,0 +1,185 @@ +0hotmail.com +2hotmail.com +3hotmail.com +4hotmail.com +5hotmail.com +6hotmail.com +7hotmail.com +8hotmail.com +9hotmail.com +aaaol.com +agmail.com +ahoo.es +aol.org +attbi.com +btinernet.com +ccomcast.net +comacast.com +comcat.net +comcasat.net +com.com +deslextreme.com +gamail.com +gamil.com +gemail.com +gimail.com +gimal.com +gmaail.com +gmael.com +gmai.com +gmaii.com +gmaiil.com +gmail.com.ar +gmail.com.co +gmail.com.com +gmail.co.uk +gmaili.com +gmail.it +gmaill.com +gmailmail.com +gmail.org +gmaio.com +gmaiul.com +gmal.com +gmasil.com +gmeil.com +gmial.com +gmil.com +gnail.com +googelmail.com +googlemai.com +googlemaol.com +googlrmail.com +gotmail.com +gotmail.co.uk +hamail.com +haomail.com +haoo.com +haotmail.com +hayoo.com +hjotmail.com +hmail.com +hntmail.com +ho0tmail.com +ho5tmail.com +hodtmail.com +hoitmail.com +holmail.com +holtmail.com +homail.com +homail.es +homail.it +homtail.com +homtmail.com +hoootmail.com +hoptmail.com +hot5mail.com +hotamail.com +hotamail.co.uk +hotamial.com +hotamil.com +hotamil.es +hothmail.com +hotma.com +hotma1l.com +hotmai.it +hotmaiil.es +hotmailc.com +hot.mail.com +hotmail.com.com +hotmail.com.es +hotmail.com.mx +hotmail.cu.uk +hotmail.hotmail.com +hotmailm.com +hotmailo.com +hotmaio.com +hotmaiol.com +hotmal.com +hotmal.co.uk +hotmall.com +hotmaol.com +hotmasil.com +hotmauil.com +hotmaul.com +hotmayl.com +hotmeil.com +hotmeil.es +hotmiail.com +hotmial.com +hotmil.com +hotmil.co.uk +hotmkail.com +hotmzil.com +hotmsil.com +hotnail.com +hotnmail.com +hotomail.com +hotrmail.com +hotwmail.com +hoymail.es +hpotmail.com +htmail.com +htmail.co.uk +htmail.it +htomail.it +husmail.com +hyotmail.com +iyahoo.es +jahoo.es +jhotmail.com +jmail.com +latinmil.com +lhotmail.com +lve.com +motmail.com +notmail.com +ogmail.com +ohotmail.com +outlok.com +paypai.net +qhotmail.com +reddifmail.com +rocektmail.com +rochetmail.com +sbcglobsl.net +sblglobal.net +smail.com +sncglobal.net +symapatico.ca +sympatco.ca +sympativo.ca +tahoo.com +tahoo.co.uk +thotmail.com +uahoo.es +uyahoo.com +verison.net +vrginmedia.com +yaahoo.es +yagoo.es +yahh.com +yahh.fr +yahho.com.ar +yahho.com.mx +yahho.es +yahhoo.es +yaho.com.co +yaho.com.mx +yahoo.com.com +yahool.es +yahooo.es +yahoo.som.mx +yahopo.es +yajoo.es +yamail.com +yaoo.es +yaoo.fr +yayhoo.es +yhahoo.es +yhaoo.es +yhoo.es +yhoo.fr +ymal.com +yoahoo.com.ar +yohoo.es diff --git a/tools/typos/lists/riseup b/tools/typos/lists/riseup new file mode 100644 index 0000000000000000000000000000000000000000..5e62791a212dd996cf7b4452236931c888d8b321 --- /dev/null +++ b/tools/typos/lists/riseup @@ -0,0 +1,24 @@ +aol.riseup.net +btinternet.riseup.net +email.riseup.net +gmai.riseup.net +gmail.riseup.net +hotmail.riseup.net +hotmailcom.riseup.net +raiseup.net +riesup.net +rieup.net +riserup.com +rise.up.net +riserup.net +riseuo.net +riseup.com +riseup.nl +riseup.net.net +riseup.org +riseup.riseup.net +risuep.net +risup.net +rsieup.net +siseup.net +yahoo.riseup.net diff --git a/tools/typos/lists/rr b/tools/typos/lists/rr new file mode 100644 index 0000000000000000000000000000000000000000..bd7f20887b4e97ce98c3e33dbf513e55ab784402 --- /dev/null +++ b/tools/typos/lists/rr @@ -0,0 +1,6 @@ +austin.rr.net +houston.rr.com +midsouth.rr.com +mn.rr.com +nycapp.rr.com +nyc.rr.gov diff --git a/tools/typos/lists/tiscali-owned b/tools/typos/lists/tiscali-owned new file mode 100644 index 0000000000000000000000000000000000000000..b9cce52fee06fc8dffe73a73d0b71e29f7afeb3b --- /dev/null +++ b/tools/typos/lists/tiscali-owned @@ -0,0 +1,5 @@ +tiscali.at +tiscali.be +tiscali.de +tiscali.es +tiscali.fr diff --git a/tools/typos/lists/verizon-owned b/tools/typos/lists/verizon-owned new file mode 100644 index 0000000000000000000000000000000000000000..b1e8761a94a609659cb3ce7c6581d99b178378aa --- /dev/null +++ b/tools/typos/lists/verizon-owned @@ -0,0 +1,2 @@ +verison.com +verizen.com diff --git a/tools/typos/lists/wanadoo-owned b/tools/typos/lists/wanadoo-owned new file mode 100644 index 0000000000000000000000000000000000000000..463d2c92fe0cfd754736e832596429bdbd87e82d --- /dev/null +++ b/tools/typos/lists/wanadoo-owned @@ -0,0 +1 @@ +anadoo.fr diff --git a/tools/typos/lists/yahoo-owned b/tools/typos/lists/yahoo-owned new file mode 100644 index 0000000000000000000000000000000000000000..0d276f3d5c5270e237152c5480f5fd649aec77ff --- /dev/null +++ b/tools/typos/lists/yahoo-owned @@ -0,0 +1,14 @@ +ahoo.com +ayhoo.com +hahoo.com +hotmail.yahoo.it +yahhoo.com +yahhoo.fr +yaho.com.ar +yaho.fr +yahoo.cm +yahoo.net +yahooo.com +yahooo.fr +yhaoo.com +yohoo.com diff --git a/tools/typos/mktransport b/tools/typos/mktransport new file mode 100755 index 0000000000000000000000000000000000000000..b081a554ce2697811cbc432ae29900d3934306dc --- /dev/null +++ b/tools/typos/mktransport @@ -0,0 +1,36 @@ +#!/bin/sh +# mktransport- given a bunch of lists of typo domains, generate a postfix +# compatible transports file +# Matt Taggart <taggart@riseup.net> + +owned='aol-owned bt-owned comcast-owned facebook-owned google-owned MS-owned riseup rr tiscali-owned verizon-owned wanadoo-owned yahoo-owned' +registered='rfc-registered' +not='rfc-not' +# we could probably do invalid domains too + +echo "## transport_typos: domains we want to reject right away so they don't" +echo "## clog up the queue with undeliverable junk (or worse leak private" +echo "## information to the typo squatter)" +echo +echo "# domains that are registered by the owner of the domain they are a typo for" +for file in $owned; do + echo "# ${file%-owned} owned domains" + for domain in `cat lists/$file`; do + echo "$domain error: This domain exists, but is probably a typo. Contact http://help.riseup.net/help-desk if this is in error." + echo ".$domain error: This domain exists, but is probably a typo. Contact http://help.riseup.net/help-desk if this is in error." + done +done + +echo +echo "# domains that are registered by a squatter/random" +for domain in `cat lists/$registered`; do + echo "$domain error: This domain exists, but is probably a typo. Contact http://help.riseup.net/help-desk if this is in error." + echo ".$domain error: This domain exists, but is probably a typo. Contact http://help.riseup.net/help-desk if this is in error." +done + +echo +echo "# domains that aren't registered" +for domain in `cat lists/$not`; do + echo "$domain error: This domain isn't resolving, but is probably a typo anyway. Contact http://help.riseup.net/help-desk if this is in error." + echo ".$domain error: This domain isn't resolving, but is probably a typo anyway. Contact http://help.riseup.net/help-desk if this is in error." +done diff --git a/tools/updatedirectory.php b/tools/updatedirectory.php new file mode 100755 index 0000000000000000000000000000000000000000..1c8b87f914b1ec93bd94d031e81ab9cc866161ae --- /dev/null +++ b/tools/updatedirectory.php @@ -0,0 +1,91 @@ +#!/usr/bin/php4 -q +<?php + +require_once('fs.php'); + +$domain="lists.riseup.net"; +$home="/home/sympa"; +$inc = "$home/etc/inc"; +$directory_file="$inc/directory"; +$headerfile = "$inc/header"; +$footerfile = "$inc/footer"; +$doc_root="$home/etc/"; + +$lists = array(); // listname -> status, visibility, subscribe, subject, subscribers, traffic. +$listsbytopic = array(); + +$topicconf = file("$home/etc/topics.conf"); +$topics = array(); // map name -> title +while(count($topicconf)) { + $str = array_pop($topicconf); + if (preg_match("/^title /",$str)) + $topics[trim(array_pop($topicconf))] = trim(substr($str,6)); +} + +$ls=split("\n",trim(`ls -1 $home/expl/`)); +foreach($ls as $list) { + $conf = "$home/expl/$list/config"; + #$list = basename(dirname($conf)); + if (!is_file($conf)) continue; + $data = array('status'=>'open','visibility'=>'anyone','subscribe'=>'verified','subject'=>'no subject','topics'=>''); + $strs = split("\n",trim(`grep "^status\|^visibility\|^subscribe\|^subject\|^topics" $conf`)); + foreach($strs as $str) { + preg_match('/^(\w*)\s*(.*)$/',$str,$matches); + $data[$matches[1]] = trim($matches[2]); + } + $data['topics'] = preg_split('/[\s,]/',$data['topics']); + $lists[$list]=$data; + foreach($data['topics'] as $topic) { + $listsbytopic[$topic][$list] = &$lists[$list]; + } +} + +exit + +//// build topic pages /////// + +$header = " +<html> + <link rel='stylesheet' type='text/css' href='/style.css' /> + <title>lists.riseup.net</title> +</head> +<body> +"; +$header .= file_get_contents($headerfile); +$footer = file_get_contents($footerfile); +$footer = str_replace("\n", " ", $footer); +$footer = preg_replace("'<FORM.*</FORM>'m", "", $footer); +$footer .= "\n</body></html>"; +foreach($listsbytopic as $topic => $lists) { + $html=$header; + $html .= "<div class=dirnav><a href='/www'>Lists</a> > <a href='/directory/$topic/'>$topics[$topic]</a></div>\n"; + foreach($lists as $list => $data) { + if ($data['status']!='open' || $data['visibility']!='anyone') + continue; + $html.="<div class=dirlist><a href='/www/info/$list'>$list</a> $data[subject]</div>\n"; + } + $html .= $footer; + if (!is_dir("$doc_root/directory/$topic/")) mkdir("$doc_root/directory/$topic/"); + $fs->put("$doc_root/directory/$topic/index.html", $html); +} + +// build directory /////////////////// + +unset($topics['xother']); +asort($topics); +$rows = count($topics)/2; +$html = "<table border='0' width='100%'><tr>\n"; +$html .= "<td width='50%' NOWRAP valign=top>\n"; +$i=0; +foreach($topics as $name => $title) { + $html .= "<li><a HREF='/directory/$name/' class='topic'>$title (" . count($listsbytopic[$name]) . ")</a></li>\n"; + if ($i==$rows-1) { + $html .= "</td><td width='50%' NOWRAP valign=top>\n"; + } + $i++; +} +$html .= "</tr></table>\n"; +$fs->put($directory_file,$html); +return; + +?> diff --git a/tools/updatedirectory.rb b/tools/updatedirectory.rb new file mode 100755 index 0000000000000000000000000000000000000000..0780129f2bdb84de8fbd09ab4e3ac81bb9f8cc1e --- /dev/null +++ b/tools/updatedirectory.rb @@ -0,0 +1,139 @@ +#!/usr/bin/ruby + +# +# Requires Ruby 1.9 or later +# + +require 'fileutils' + +domain = "lists.riseup.net" +home_dir = "/home/sympa" +template_dir = "#{home_dir}/etc/web_tt2" +expl_dir = "#{home_dir}/expl" +inc_dir = "#{home_dir}/docroot/inc" +header_file = "#{inc_dir}/header.html" +footer_file = "#{inc_dir}/footer.html" +directory_dir = "#{home_dir}/docroot/directory" +directory_file = "#{template_dir}/custom_list_directory.tt2" + +Encoding.default_internal = Encoding::UTF_8 + +############################################################## +# FUNCTIONS + +def load_topics( file ) + topics = [] + topic = nil + File.open(file, 'r:utf-8').each do |line| + if line =~ /^title (.*)$/ + topics << [topic, $1] if topic + elsif line =~ /xother/ + topic = nil # skip xother + elsif line =~ /^(\w*)\s*$/ + topic = $1 + end + end + topics +end + +def load_config(file) + conf = {} + File.open(file, 'r:utf-8').each do |line| + line.encode!('UTF-8', 'UTF-8', :invalid => :replace) + if line =~ /^(status|visibility|topics|subject|info)\s*(.*)\s*$/ + option, value = $1.to_sym, $2 + conf[option] = value unless option == :visibility and conf[:visibility] # don't reset visibility if it was already set. in some config files, it is first set for the whole list, and then later in the file it includes the visibility of list owners/moderators + end + end + conf[:topics] = (conf[:topics]||'').split(/[\s,]/).compact.uniq + conf[:visibility] ||= 'anyone' + conf[:info] ||= 'open' + conf +end + +def load_lists(dir) + listsbytopic = {} + lists = Dir.entries(dir) - ['.','..'] + lists.each do |list| + next unless File.exist? "#{dir}/#{list}/config" + conf = load_config("#{dir}/#{list}/config") + next unless conf[:status] == 'open' + yield list, conf + conf[:topics].each do |topic| + listsbytopic[topic] ||= [] + listsbytopic[topic] << [list, conf] + end + end + listsbytopic +end + +# we don't know if string is already unicode, or something else +def convert_string_to_utf8(string) + if string + string.encode!('UTF-8', 'UTF-8', :invalid => :replace) + else + "" + end +end + +############################################################## +# MAIN + +visiblecount = 0 +hiddencount = 0 + +listsbytopic = load_lists(expl_dir) do |list, conf| + if conf[:visibility] == 'anyone' + visiblecount += 1 + else + hiddencount += 1 + end +end + +header = IO.read(header_file) +footer = IO.read(footer_file) + +topics = load_topics("#{home_dir}/etc/topics.conf") +topics.each do |topic| + topic_name, topic_title = topic + topic_dir = "#{directory_dir}/#{topic_name}/" + topic_file = "#{directory_dir}/#{topic_name}/index.html" + + listsbytopic[topic_name] ||= [] + + html = header + html += "<blockquote><div><a href='/www'>Home</a> » <a href='/directory/#{topic_name}/'>#{topic_title}</a></div>\n\n" + + listsbytopic[topic_name].sort.each do |list| + listname, listdata = list + next unless listdata[:visibility] == 'anyone' and (listdata[:info] == 'open' or listdata[:info] == 'anyone') # having info set to 'open' or 'anyone' seem to be equivalent, so changing this so it treats them as the same. These options might get redone, but should be a fine fix for now. + subject = convert_string_to_utf8(listdata[:subject]) + html += "<p><a href='/www/info/#{listname}'>#{listname}</a> #{subject}</p>\n\n" + end + html += footer + + FileUtils.mkdir_p(topic_dir) + File.open(topic_file,'w') do |f| + f << html + end +end + +topics.sort! do |a,b| + a[0] <=> b[0] +end + +html = "<table id='listdirectory'><tr>\n" +html += "<td><ul class='plainlist'>\n" +rows = topics.size/3 +i = 1 +topics.each do |topic| + topic_name, topic_title = topic + html += "<li><a href='/directory/%s/'>%s (%s)</a></li>\n" % [topic_name, topic_title, listsbytopic[topic_name].size] + html += "</ul></td><td><ul class='plainlist'>\n" if i%rows==0 + i += 1 +end +html += "</tr></table></blockquote>\n" + +File.open(directory_file,'w') do |f| + f << html +end diff --git a/tools/user.unsubscribe b/tools/user.unsubscribe new file mode 100755 index 0000000000000000000000000000000000000000..c1151f2ed0d645c18cd3fe30584bd3c072908db4 --- /dev/null +++ b/tools/user.unsubscribe @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +## +## command line script to remove a list of users +## usage: +## cat users | user.unsubscribe <listname> +## + +if ($#ARGV != 0) { + print "usage:\n cat <file of emails> | user.unsubscribe <listname>\n\n"; + exit; +} +require 'list.common'; + +my $list = new List($ARGV[0]); + +## dump subscribers backup file +#$list->_save_users_file("$list->{'dir'}/subscribers.dump"); + +## Delete users +my @users; +while (<STDIN>) { + print 'unsubscribe ', $_; + chop; + push @users, $_; +} +$list->delete_user(@users); diff --git a/tools/withincludes b/tools/withincludes new file mode 100755 index 0000000000000000000000000000000000000000..613f594e651b3ef0dc6d7ec02a49eac650ad7ecb --- /dev/null +++ b/tools/withincludes @@ -0,0 +1,6 @@ +#!/bin/sh + +lists="all newsletter mailusers listadmins" +for l in $lists; do + touch /home/sympa/expl/$l/config; +done