branch "ui_templates" moved to new trunk
This commit is contained in:
parent
7930994498
commit
33e299a402
2
INSTALL
2
INSTALL
|
@ -7,7 +7,7 @@ OVERVIEW:
|
||||||
3 - configuration file
|
3 - configuration file
|
||||||
4 - compile cgi wrapper
|
4 - compile cgi wrapper
|
||||||
5 - install cgi wrapper
|
5 - install cgi wrapper
|
||||||
6 - (optional) configure access control (http authentication)
|
6 - [optional] configure access control (http authentication)
|
||||||
7 - css stylesheet file
|
7 - css stylesheet file
|
||||||
8 - final test
|
8 - final test
|
||||||
|
|
||||||
|
|
23
README
23
README
|
@ -1,6 +1,6 @@
|
||||||
=================
|
===================
|
||||||
| ezmlm-web-3.1 |
|
| ezmlm-web-3.1.1 |
|
||||||
=================
|
===================
|
||||||
|
|
||||||
If you only want to know how to install ezmlm-web, then you should
|
If you only want to know how to install ezmlm-web, then you should
|
||||||
read INSTALL.
|
read INSTALL.
|
||||||
|
@ -21,7 +21,7 @@ VIII. Bugs && Bug Reports
|
||||||
|
|
||||||
I. Copyright Stuff - essentially the FreeBSD licence ...
|
I. Copyright Stuff - essentially the FreeBSD licence ...
|
||||||
==================
|
==================
|
||||||
ezmlm-web - version 3.1 - 12/22/02005
|
ezmlm-web - version 3.1.1 - 01/19/02006
|
||||||
|
|
||||||
Copyright (C) 1998, Guy Antony Halse, All Rights Reserved.
|
Copyright (C) 1998, Guy Antony Halse, All Rights Reserved.
|
||||||
|
|
||||||
|
@ -107,6 +107,7 @@ This version of ezmlm-web requires the following;
|
||||||
+ Getopt::Std v4.1
|
+ Getopt::Std v4.1
|
||||||
+ File::Find v?
|
+ File::Find v?
|
||||||
+ File::Copy v2.02
|
+ File::Copy v2.02
|
||||||
|
+ File::Path v1.07
|
||||||
+ Text::ParseWords v3.24
|
+ Text::ParseWords v3.24
|
||||||
|
|
||||||
The version number indicates the version of the module that ezmlm-web was
|
The version number indicates the version of the module that ezmlm-web was
|
||||||
|
@ -179,17 +180,19 @@ V. Notes
|
||||||
idea. The only reason I put it in is that bvi@rucus asked for it.
|
idea. The only reason I put it in is that bvi@rucus asked for it.
|
||||||
If you set $UNSAFE_RD = 0 (the default) in the config section, the
|
If you set $UNSAFE_RD = 0 (the default) in the config section, the
|
||||||
ezmlm-web won't actually delete the list. In this case it moves the <list>
|
ezmlm-web won't actually delete the list. In this case it moves the <list>
|
||||||
to .<list> and all the associated .qmail files to a sub-directory called
|
and all the associated .qmail files to a sub-directory called
|
||||||
deleted.qmail/ (In the users home directory. This is by far a safer way
|
deleted.qmail/ (In the users home directory. This is by far a safer way
|
||||||
(since you can restore lists) and therefore I recommend it.
|
(since you can restore lists) and therefore I recommend it.
|
||||||
|
|
||||||
* The HTML interface has been tested using Nutscrape, Internet Exploder, and
|
|
||||||
Lynx. If anyone uses anything else and has problems, please let me know.
|
|
||||||
|
|
||||||
* I suggest that you make use of custom ezmlmwebrc files rather than using
|
* I suggest that you make use of custom ezmlmwebrc files rather than using
|
||||||
the -d command line switches - it makes fault diagnosis easier ...
|
the -d command line switches - it makes fault diagnosis easier ...
|
||||||
|
|
||||||
* Please see the section on languages below.
|
* Vpopmail users should set up different suid wrappers for every single
|
||||||
|
managed domain.
|
||||||
|
These wrappers should be accompanied by seperate ezmlmwebrc files with
|
||||||
|
different DOTQMAIL_DIR settings.
|
||||||
|
Please send me a more detailed description, if you managed to use ezmlm-web
|
||||||
|
with this kind of setup :)
|
||||||
|
|
||||||
|
|
||||||
VI. Multi-Level Access
|
VI. Multi-Level Access
|
||||||
|
@ -236,7 +239,7 @@ VII. Language Portablity
|
||||||
=========================
|
=========================
|
||||||
One of the great new features of version 2.0 is that it is essentially
|
One of the great new features of version 2.0 is that it is essentially
|
||||||
language independant. All of the fixed strings, help, etc is defined in the
|
language independant. All of the fixed strings, help, etc is defined in the
|
||||||
files of lang directory. Of course you can change them or create a new
|
files of the lang directory. Of course you can change them or create a new
|
||||||
translation.
|
translation.
|
||||||
|
|
||||||
The language can be selected in ezmlmwebrc with the "HTML_LANGUAGE" option.
|
The language can be selected in ezmlmwebrc with the "HTML_LANGUAGE" option.
|
||||||
|
|
5
TODO
5
TODO
|
@ -1,7 +1,5 @@
|
||||||
ezmlm-idx5: modsub and modpost are ignored, if the flag is not set
|
ezmlm-idx5: modsub and modpost are ignored, if the flag is not set
|
||||||
|
|
||||||
check relevance of "t", "f" and "x" flag for idx5
|
|
||||||
|
|
||||||
"cancel" button during text editing (simple "reset" input button)
|
"cancel" button during text editing (simple "reset" input button)
|
||||||
|
|
||||||
restore user input after failed list_create (especially options)
|
restore user input after failed list_create (especially options)
|
||||||
|
@ -10,8 +8,7 @@ support for:
|
||||||
* show subscription log
|
* show subscription log
|
||||||
* 'mailinglist' (maybe)
|
* 'mailinglist' (maybe)
|
||||||
* config directory (maybe)
|
* config directory (maybe)
|
||||||
|
* gpg-ezmlm (defenitely)
|
||||||
allow dynamic addition of user-made config templates (seperate directory, ...)
|
|
||||||
|
|
||||||
interface language switch support
|
interface language switch support
|
||||||
choose basic/expert to disable questions
|
choose basic/expert to disable questions
|
||||||
|
|
|
@ -2,6 +2,15 @@ This file contains some useful hints for upgrading from a previous version of ez
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
UPGRADING ezmlm-web 3.1 to ezmlm-web 3.1.4
|
||||||
|
|
||||||
|
1) install the perl module File::Path
|
||||||
|
|
||||||
|
2) a new (optional) configuration setting is available: DOTQMAIL_DIR
|
||||||
|
Use it, if you run a multi domain vpopmail setup.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
UPGRADING ezmlm-web 3.0 to ezmlm-web 3.1
|
UPGRADING ezmlm-web 3.0 to ezmlm-web 3.1
|
||||||
|
|
||||||
1) update the perl module Mail::Ezmlm to v0.07
|
1) update the perl module Mail::Ezmlm to v0.07
|
||||||
|
|
18
changelog
18
changelog
|
@ -1,3 +1,21 @@
|
||||||
|
Version 3.1.4 - 03/26/02006
|
||||||
|
* new setting: DOTQMAIL_DIR (useful for multi domain vpopmail setups)
|
||||||
|
[suggested by Maurits Lamers]
|
||||||
|
* minor stylesheet change (circumvents IE rendering bug)
|
||||||
|
* case-insensitive check for mime type during address file upload
|
||||||
|
|
||||||
|
Version 3.1.3 - 02/22/02006
|
||||||
|
* fixed removal of dotqmail files
|
||||||
|
|
||||||
|
Version 3.1.2 - 02/15/02006
|
||||||
|
* honour DEFAULT_OPTIONS for new lists
|
||||||
|
* fixed portability issue of the suid-wrapper
|
||||||
|
|
||||||
|
Version 3.1.1 - 01/19/02006
|
||||||
|
* more careful removal of dotmail files
|
||||||
|
* allow dots in webuser names
|
||||||
|
* allow underscores in descriptive listname
|
||||||
|
|
||||||
Version 3.1 - 01/14/02006
|
Version 3.1 - 01/14/02006
|
||||||
* fully compatible with ezmlm-idx v5.0
|
* fully compatible with ezmlm-idx v5.0
|
||||||
* change language of list (idx >= 5.0)
|
* change language of list (idx >= 5.0)
|
||||||
|
|
|
@ -106,11 +106,11 @@ font.feature {
|
||||||
}
|
}
|
||||||
|
|
||||||
#main_content fieldset.form form ul {
|
#main_content fieldset.form form ul {
|
||||||
padding-left: 1%;
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main_content fieldset.form form ul li ul {
|
#main_content fieldset.form form ul li ul {
|
||||||
padding-left: 3%;
|
padding-left: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main_content table.list_select {
|
#main_content table.list_select {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
Package: ezmlm-web
|
Package: ezmlm-web
|
||||||
Version: 3.1-3
|
Version: 3.1.1-1
|
||||||
Section: admin
|
Section: admin
|
||||||
Priority: extra
|
Priority: extra
|
||||||
Architecture: all
|
Architecture: all
|
||||||
|
@ -16,5 +16,6 @@ Description: Web interface for ezmlm-idx mailing list administration
|
||||||
* qmail - http://cr.yp.to/qmail.html
|
* qmail - http://cr.yp.to/qmail.html
|
||||||
* ezmlm-idx - http://ezmlm.org/
|
* ezmlm-idx - http://ezmlm.org/
|
||||||
* clearsilver for perl (>= 0.10.2) - http://www.clearsilver.net/downloads/
|
* clearsilver for perl (>= 0.10.2) - http://www.clearsilver.net/downloads/
|
||||||
* some perl modules (see README.Debian)
|
* Mail::Ezmlm perl module via cpan or as debian package from
|
||||||
|
https://systemausfall.org/toolforge/debian
|
||||||
|
|
||||||
|
|
149
ezmlm-web.cgi
149
ezmlm-web.cgi
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# ezmlm-web.cgi - version 3.1
|
# ezmlm-web.cgi - version 3.1.1
|
||||||
# ==========================================================================
|
# ==========================================================================
|
||||||
# All user configuration happens in the config file ``ezmlmwebrc''
|
# All user configuration happens in the config file ``ezmlmwebrc''
|
||||||
# POD documentation is at the end of this file
|
# POD documentation is at the end of this file
|
||||||
|
@ -15,6 +15,7 @@ use ClearSilver;
|
||||||
use Mail::Ezmlm;
|
use Mail::Ezmlm;
|
||||||
use Mail::Address;
|
use Mail::Address;
|
||||||
use File::Copy;
|
use File::Copy;
|
||||||
|
use File::Path;
|
||||||
use DB_File;
|
use DB_File;
|
||||||
use CGI;
|
use CGI;
|
||||||
use IO::File;
|
use IO::File;
|
||||||
|
@ -42,7 +43,7 @@ my @tmp = getpwuid($>); use vars qw[$USER]; $USER=$tmp[0];
|
||||||
|
|
||||||
use vars qw[$HOME_DIR]; $HOME_DIR=$tmp[7];
|
use vars qw[$HOME_DIR]; $HOME_DIR=$tmp[7];
|
||||||
use vars qw[$DEFAULT_OPTIONS $UNSAFE_RM $ALIAS_USER $LIST_DIR];
|
use vars qw[$DEFAULT_OPTIONS $UNSAFE_RM $ALIAS_USER $LIST_DIR];
|
||||||
use vars qw[$QMAIL_BASE $PRETTY_NAMES];
|
use vars qw[$QMAIL_BASE $PRETTY_NAMES $DOTQMAIL_DIR];
|
||||||
use vars qw[$FILE_UPLOAD $WEBUSERS_FILE $MAIL_DOMAIN $HTML_TITLE];
|
use vars qw[$FILE_UPLOAD $WEBUSERS_FILE $MAIL_DOMAIN $HTML_TITLE];
|
||||||
use vars qw[$HTML_CSS_FILE $TEMPLATE_DIR $LANGUAGE_DIR $HTML_LANGUAGE];
|
use vars qw[$HTML_CSS_FILE $TEMPLATE_DIR $LANGUAGE_DIR $HTML_LANGUAGE];
|
||||||
|
|
||||||
|
@ -75,11 +76,15 @@ if(defined($opt_d)) {
|
||||||
$LIST_DIR = $1 if ($opt_d =~ /^([-\@\w.\/]+)$/);
|
$LIST_DIR = $1 if ($opt_d =~ /^([-\@\w.\/]+)$/);
|
||||||
}
|
}
|
||||||
|
|
||||||
# If WEBUSERS_FILE is not defined in ezmlmwebrc (as before version 2.2), then use former default value for compatibility
|
# If WEBUSERS_FILE is not defined in ezmlmwebrc (as before version 2.2),
|
||||||
|
# then use former default value for compatibility
|
||||||
if (!defined($WEBUSERS_FILE)) {
|
if (!defined($WEBUSERS_FILE)) {
|
||||||
$WEBUSERS_FILE = $LIST_DIR . '/webusers'
|
$WEBUSERS_FILE = $LIST_DIR . '/webusers'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# check for non-default dotqmail directory
|
||||||
|
$DOTQMAIL_DIR = $HOME_DIR unless defined($DOTQMAIL_DIR);
|
||||||
|
|
||||||
# check optional stylesheet
|
# check optional stylesheet
|
||||||
$HTML_CSS_FILE = '' unless defined($HTML_CSS_FILE);
|
$HTML_CSS_FILE = '' unless defined($HTML_CSS_FILE);
|
||||||
|
|
||||||
|
@ -150,7 +155,6 @@ elsif ($action eq '' || $action eq 'list_select') {
|
||||||
}
|
}
|
||||||
} elsif ($action eq 'list_delete_do') {
|
} elsif ($action eq 'list_delete_do') {
|
||||||
# User really wants to delete a list ...
|
# User really wants to delete a list ...
|
||||||
warn "do it";
|
|
||||||
if (defined($q->param('list'))) {
|
if (defined($q->param('list'))) {
|
||||||
$success = 'DeleteList' if (&delete_list());
|
$success = 'DeleteList' if (&delete_list());
|
||||||
} else {
|
} else {
|
||||||
|
@ -292,6 +296,14 @@ sub load_hdf {
|
||||||
$hdf->setValue("TemplateDir", "$TEMPLATE_DIR/");
|
$hdf->setValue("TemplateDir", "$TEMPLATE_DIR/");
|
||||||
&fatal_error("Language data dir ($LANGUAGE_DIR) not found!") unless (-e $LANGUAGE_DIR);
|
&fatal_error("Language data dir ($LANGUAGE_DIR) not found!") unless (-e $LANGUAGE_DIR);
|
||||||
$hdf->setValue("LanguageDir", "$LANGUAGE_DIR/");
|
$hdf->setValue("LanguageDir", "$LANGUAGE_DIR/");
|
||||||
|
|
||||||
|
my $ui_set = 'default';
|
||||||
|
my $ui_template = "normal";
|
||||||
|
&fatal_error("UI template file not found") unless (-e "$TEMPLATE_DIR/ui/$ui_set/${ui_template}.hdf");
|
||||||
|
$hdf->setValue("Config.UI.LinkAttrs.web_lang", $HTML_LANGUAGE);
|
||||||
|
$hdf->setValue("Config.UI.LinkAttrs.template", $ui_template);
|
||||||
|
$hdf->readFile("$TEMPLATE_DIR/ui/$ui_set/${ui_template}.hdf");
|
||||||
|
|
||||||
$hdf->setValue("ScriptName", $ENV{'SCRIPT_NAME'});
|
$hdf->setValue("ScriptName", $ENV{'SCRIPT_NAME'});
|
||||||
$hdf->setValue("Stylesheet", "$HTML_CSS_FILE");
|
$hdf->setValue("Stylesheet", "$HTML_CSS_FILE");
|
||||||
$hdf->setValue("Config.PageTitle", "$HTML_TITLE");
|
$hdf->setValue("Config.PageTitle", "$HTML_TITLE");
|
||||||
|
@ -322,7 +334,12 @@ sub output_page {
|
||||||
|
|
||||||
$cs->parseFile($pagefile);
|
$cs->parseFile($pagefile);
|
||||||
|
|
||||||
print $cs->render();
|
my $output;
|
||||||
|
if ($output = $cs->render()) {
|
||||||
|
print $output;
|
||||||
|
} else {
|
||||||
|
&fatal_error($cs->displayError());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
@ -567,7 +584,6 @@ sub set_pagedata4options {
|
||||||
|
|
||||||
for ($i=0; $i<=9; $i++) {
|
for ($i=0; $i<=9; $i++) {
|
||||||
unless (($i eq 1) || ($i eq 2)) {
|
unless (($i eq 1) || ($i eq 2)) {
|
||||||
# TODO: maybe add "-" to the pattern to avoid strange directory settings ending in a digit :)
|
|
||||||
$state = ($options =~ /\s-$i (?:'(.+?)')/);
|
$state = ($options =~ /\s-$i (?:'(.+?)')/);
|
||||||
unless ($state) {
|
unless ($state) {
|
||||||
# set default values
|
# set default values
|
||||||
|
@ -613,11 +629,54 @@ sub get_list_part
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
sub get_dotqmail_files {
|
||||||
|
my ($list, @files, $qmail_prefix);
|
||||||
|
|
||||||
|
$list = new Mail::Ezmlm("$LIST_DIR/" . $q->param('list'));
|
||||||
|
|
||||||
|
# get the location of the dotqmail files of the list
|
||||||
|
# read 'dot' for idx v5
|
||||||
|
$qmail_prefix = $list->getpart('dot');
|
||||||
|
# untaint content (we trust in it)
|
||||||
|
if ($qmail_prefix) {
|
||||||
|
$qmail_prefix =~ m/^(.*)$/;
|
||||||
|
$qmail_prefix = $1;
|
||||||
|
}
|
||||||
|
# read 'config' (line starts with "T") for idx v4
|
||||||
|
unless ($qmail_prefix) {
|
||||||
|
my $config = $list->getpart('config');
|
||||||
|
$config =~ m/^T:(.*)$/m;
|
||||||
|
$qmail_prefix = $1;
|
||||||
|
}
|
||||||
|
chomp($qmail_prefix);
|
||||||
|
|
||||||
|
# return without result and print a warning, if no dotqmail files were found
|
||||||
|
unless ($qmail_prefix) {
|
||||||
|
warn "[ezmlm-web]: could not get the location of the dotqmail files of this list";
|
||||||
|
return ();
|
||||||
|
}
|
||||||
|
|
||||||
|
# get list of existing files (remove empty entries)
|
||||||
|
@files = grep {/./} map { (-e "$qmail_prefix$_")? "$qmail_prefix$_" : undef } (
|
||||||
|
'',
|
||||||
|
'-default',
|
||||||
|
'-owner',
|
||||||
|
'-return-default',
|
||||||
|
'-reject-default',
|
||||||
|
'-accept-default',
|
||||||
|
'-confirm-default',
|
||||||
|
'-discard-default',
|
||||||
|
'-digest-owner',
|
||||||
|
'-digest',
|
||||||
|
'-digest-return-default');
|
||||||
|
return @files;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
sub delete_list {
|
sub delete_list {
|
||||||
# Delete a list ...
|
# Delete a list ...
|
||||||
|
|
||||||
# Fixes a bug from the previous version ... when the .qmail file has a
|
|
||||||
# different name to the list. We use outlocal to handle vhosts ...
|
|
||||||
my ($list, $listaddress, $listadd);
|
my ($list, $listaddress, $listadd);
|
||||||
$list = new Mail::Ezmlm("$LIST_DIR/" . $q->param('list'));
|
$list = new Mail::Ezmlm("$LIST_DIR/" . $q->param('list'));
|
||||||
if ($listadd = $list->getpart('outlocal')) {
|
if ($listadd = $list->getpart('outlocal')) {
|
||||||
|
@ -641,41 +700,46 @@ sub delete_list {
|
||||||
|
|
||||||
$SAFE_DIR .= '/' . $q->param('list') . "-$i";
|
$SAFE_DIR .= '/' . $q->param('list') . "-$i";
|
||||||
|
|
||||||
my ($oldfile); $oldfile = "$LIST_DIR/" . $q->param('list');
|
my @files = &get_dotqmail_files();
|
||||||
|
|
||||||
|
# remove list directory
|
||||||
|
my $oldfile = "$LIST_DIR/" . $q->param('list');
|
||||||
unless (move($oldfile, $SAFE_DIR)) {
|
unless (move($oldfile, $SAFE_DIR)) {
|
||||||
$warning = 'SafeRemoveRenameDirFailed';
|
$warning = 'SafeRemoveRenameDirFailed';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
|
|
||||||
unless (opendir(DIR, "$HOME_DIR")) {
|
# remove dotqmail files
|
||||||
$warning = 'DotQmailDirAccessDenied';
|
|
||||||
return (1==0);
|
|
||||||
}
|
|
||||||
# TODO: this could possibly move some qmail files of other lists - improve it!
|
|
||||||
my @files = map { "$HOME_DIR/$1" if m{^(\.qmail.+)$} } grep { /^\.qmail-$listaddress/ } readdir DIR;
|
|
||||||
closedir DIR;
|
|
||||||
foreach (@files) {
|
foreach (@files) {
|
||||||
unless (move($_, "$SAFE_DIR")) {
|
unless (move($_, "$SAFE_DIR")) {
|
||||||
$warning = 'SafeRemoveMoveDotQmailFailed';
|
$warning = 'SafeRemoveMoveDotQmailFailed';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
warn "List '$oldfile' moved (deleted)";
|
warn "List '$oldfile' moved (deleted)";
|
||||||
} else {
|
} else {
|
||||||
# This, however, does DELETE the list. I don't like the idea, but I was
|
# This, however, does DELETE the list. I don't like the idea, but I was
|
||||||
# asked to include support for it so ...
|
# asked to include support for it so ...
|
||||||
unless (rmtree("$LIST_DIR/" . $q->param('list'))) {
|
my @files = &get_dotqmail_files();
|
||||||
|
my $olddir = $q->param('list');
|
||||||
|
# untaint list directory name
|
||||||
|
$olddir =~ m#^([^/]*)$#;
|
||||||
|
$olddir = $1;
|
||||||
|
# first: check for invalid list directory
|
||||||
|
unless (($olddir ne '') && ($olddir ne '.' ) && ($olddir ne '..')) {
|
||||||
$warning = 'UnsafeRemoveListDirFailed';
|
$warning = 'UnsafeRemoveListDirFailed';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
opendir(DIR, "$HOME_DIR") or &fatal_error("Unable to get directory listing: $!");
|
|
||||||
my @files = map { "$HOME_DIR/$1" if m{^(\.qmail.+)$} } grep { /^\.qmail-$listaddress/ } readdir DIR;
|
|
||||||
closedir DIR;
|
|
||||||
if (unlink(@files) <= 0) {
|
if (unlink(@files) <= 0) {
|
||||||
$warning = 'UnsafeRemoveDotQmailFailed';
|
$warning = 'UnsafeRemoveDotQmailFailed';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
warn "List '$list->thislist()' deleted";
|
unless (File::Path::rmtree("$LIST_DIR/$olddir")) {
|
||||||
|
$warning = 'UnsafeRemoveListDirFailed';
|
||||||
|
return (1==0);
|
||||||
|
}
|
||||||
|
warn "List '" . $list->thislist() . "' deleted";
|
||||||
}
|
}
|
||||||
$q->param(-name=>'list', -values=>'');
|
$q->param(-name=>'list', -values=>'');
|
||||||
}
|
}
|
||||||
|
@ -748,8 +812,9 @@ sub add_address {
|
||||||
# Sanity check
|
# Sanity check
|
||||||
my $fileinfo = $q->uploadInfo($q->param('mailaddressfile'));
|
my $fileinfo = $q->uploadInfo($q->param('mailaddressfile'));
|
||||||
my $filetype = $fileinfo->{'Content-Type'};
|
my $filetype = $fileinfo->{'Content-Type'};
|
||||||
unless($filetype =~ m{^text/}) {
|
unless($filetype =~ m{^text/}i) {
|
||||||
$warning = 'InvalidFileFormat';
|
$warning = 'InvalidFileFormat';
|
||||||
|
warn "[ezmlm-web] mime type of uploaded file rejected: $filetype";
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -882,7 +947,7 @@ sub create_list {
|
||||||
# Some taint checking ...
|
# Some taint checking ...
|
||||||
$qmail = $1 if $q->param('inlocal') =~ /(?:$USER-)?([^\<\>\\\/\s]+)$/;
|
$qmail = $1 if $q->param('inlocal') =~ /(?:$USER-)?([^\<\>\\\/\s]+)$/;
|
||||||
$listname = $q->param('list');
|
$listname = $q->param('list');
|
||||||
if ($listname =~ m/[^\w\.-]/) {
|
if ($listname =~ m/[^\w\._\-]/) {
|
||||||
$warning = 'InvalidListName';
|
$warning = 'InvalidListName';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
|
@ -904,7 +969,7 @@ sub create_list {
|
||||||
$warning = 'ListNameAlreadyExists';
|
$warning = 'ListNameAlreadyExists';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
if (-e "$HOME_DIR/.qmail-$qmail") {
|
if (-e "$DOTQMAIL_DIR/.qmail-$qmail") {
|
||||||
$warning = 'ListAddressAlreadyExists';
|
$warning = 'ListAddressAlreadyExists';
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
|
@ -914,7 +979,7 @@ sub create_list {
|
||||||
my($list) = new Mail::Ezmlm;
|
my($list) = new Mail::Ezmlm;
|
||||||
|
|
||||||
unless ($list->make(-dir=>"$LIST_DIR/$listname",
|
unless ($list->make(-dir=>"$LIST_DIR/$listname",
|
||||||
-qmail=>"$HOME_DIR/.qmail-$qmail",
|
-qmail=>"$DOTQMAIL_DIR/.qmail-$qmail",
|
||||||
-name=>$q->param('inlocal'),
|
-name=>$q->param('inlocal'),
|
||||||
-host=>$q->param('inhost'),
|
-host=>$q->param('inhost'),
|
||||||
-switches=>$options,
|
-switches=>$options,
|
||||||
|
@ -950,14 +1015,20 @@ sub extract_options_from_params()
|
||||||
{
|
{
|
||||||
# Work out the command line options ...
|
# Work out the command line options ...
|
||||||
my ($options, $avail_options, $settings, $avail_settings, $i);
|
my ($options, $avail_options, $settings, $avail_settings, $i);
|
||||||
my ($listname, $list, $old_options, $state, $old_key);
|
my ($listname, $old_options, $state, $old_key);
|
||||||
|
|
||||||
# NOTE: we have to define _every_ (even unchanged) setting
|
# NOTE: we have to define _every_ (even unchanged) setting
|
||||||
# as ezmlm-make removes any undefined value
|
# as ezmlm-make removes any undefined value
|
||||||
|
|
||||||
$listname = $q->param('list');
|
$listname = $q->param('list');
|
||||||
$list = new Mail::Ezmlm("$LIST_DIR/$listname");
|
if (-e "$LIST_DIR/$listname") {
|
||||||
$old_options = $list->getconfig();
|
# the list does already exist
|
||||||
|
my $list = new Mail::Ezmlm("$LIST_DIR/$listname");
|
||||||
|
$old_options = $list->getconfig();
|
||||||
|
} else {
|
||||||
|
# creating a new list
|
||||||
|
$old_options = $DEFAULT_OPTIONS;
|
||||||
|
}
|
||||||
|
|
||||||
################ options ################
|
################ options ################
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
@ -1140,7 +1211,7 @@ sub update_webusers {
|
||||||
my $listname = $q->param('list');
|
my $listname = $q->param('list');
|
||||||
my $webusers_filtered = $q->param('webusers');
|
my $webusers_filtered = $q->param('webusers');
|
||||||
# remove any insecure characters (e.g. a line break :))
|
# remove any insecure characters (e.g. a line break :))
|
||||||
$webusers_filtered =~ s/[^\w_,-]/ /gs;
|
$webusers_filtered =~ s/[^\w,_\.\-]/ /gs;
|
||||||
open(TMP, "<$temp_file");
|
open(TMP, "<$temp_file");
|
||||||
unless (open(WU, ">$WEBUSERS_FILE")) {
|
unless (open(WU, ">$WEBUSERS_FILE")) {
|
||||||
warn "the webusers file ($WEBUSERS_FILE) is not writable";
|
warn "the webusers file ($WEBUSERS_FILE) is not writable";
|
||||||
|
@ -1272,26 +1343,6 @@ sub check_language {
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
sub rmtree {
|
|
||||||
# A subroutine to recursively delete a directory (like rm -f).
|
|
||||||
# Based on the one in the perl cookbook :)
|
|
||||||
|
|
||||||
use File::Find qw(finddepth);
|
|
||||||
File::Find::finddepth sub {
|
|
||||||
# assume that File::Find::name is secure since it only uses data we pass it
|
|
||||||
my($name) = $File::Find::name =~ m{^(.+)$};
|
|
||||||
|
|
||||||
if (!-l && -d _) {
|
|
||||||
rmdir($name) or warn "couldn't rmdir $name: $!";
|
|
||||||
} else {
|
|
||||||
unlink($name) or warn "couldn't unlink $name: $!";
|
|
||||||
}
|
|
||||||
}, @_;
|
|
||||||
1;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
|
||||||
|
|
||||||
sub fatal_error() {
|
sub fatal_error() {
|
||||||
my $text = shift;
|
my $text = shift;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,12 @@
|
||||||
# This directory will automatically be created if needed.
|
# This directory will automatically be created if needed.
|
||||||
$LIST_DIR = "$HOME_DIR/lists";
|
$LIST_DIR = "$HOME_DIR/lists";
|
||||||
|
|
||||||
|
# Where do we store the dotqmail files of this user?
|
||||||
|
# (defaults to the home directory of the executing user)
|
||||||
|
# You will have to change this value, if you use a multi domain
|
||||||
|
# vpopmail setup. Otherwise just leave the setting turned off.
|
||||||
|
#$DOTQMAIL_DIR = '/home/vpopmail/domain';
|
||||||
|
|
||||||
# Where is the webusers file for access-permissions
|
# Where is the webusers file for access-permissions
|
||||||
# defaults to "$LIST_DIR/webusers"
|
# defaults to "$LIST_DIR/webusers"
|
||||||
$WEBUSERS_FILE = "$LIST_DIR/webusers";
|
$WEBUSERS_FILE = "$LIST_DIR/webusers";
|
||||||
|
|
31
index.c
31
index.c
|
@ -1,6 +1,7 @@
|
||||||
/* $Id: index.c,v 1.2 2000/09/25 18:14:12 guy Exp $ */
|
/* $Id$ */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
/* C wrapper to allow ezmlm-web.cgi to run suid */
|
/* C wrapper to allow ezmlm-web.cgi to run suid */
|
||||||
/* Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved */
|
/* Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved */
|
||||||
|
@ -8,18 +9,26 @@
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
/* Change this path to wherever you decided to put ezmlm-web.cgi */
|
/* Change this path to wherever you decided to put ezmlm-web.cgi */
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi");
|
execv("/usr/local/bin/ezmlm-web.cgi", NULL);
|
||||||
|
|
||||||
|
/* Note that you could also use the following to allow a specific user
|
||||||
|
to store their mailing lists and configuration file in a different
|
||||||
|
location. This overrides the default.
|
||||||
|
|
||||||
|
ezmlm-web.cgi understands the following parameters:
|
||||||
|
-C /path/to/config.file
|
||||||
|
-d /path/to/list/directory
|
||||||
|
|
||||||
|
See README for the default values. */
|
||||||
|
|
||||||
/* Note that you could also use the following to allow a specific user
|
|
||||||
to store their mailing lists in a different directory defined by
|
|
||||||
/tmp/ezmlm-web-demo ... This over-rides the default . */
|
|
||||||
|
|
||||||
/* Look at the exec(3) man page if you don't understand how the arguments
|
/* Look at the exec(3) man page if you don't understand how the arguments
|
||||||
list below works */
|
list below works */
|
||||||
|
|
||||||
|
/*
|
||||||
|
char *switches[] = { "ezmlm-web.cgi", "-d", "/tmp/ezmlm-web-demo", NULL };
|
||||||
|
execv("/usr/local/bin/ezmlm-web.cgi", switches);
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
char *switches[] = { "ezmlm-web.cgi", "-d", "/tmp/ezmlm-web-demo", NULL };
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi", switches);
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ LanguageDir
|
||||||
Stylesheet
|
Stylesheet
|
||||||
HelpIconURL
|
HelpIconURL
|
||||||
Config.Title
|
Config.Title
|
||||||
|
Config.UI.LinkAttrs.web_lang
|
||||||
|
Config.UI.LinkAttrs.template
|
||||||
|
|
||||||
Data.Action
|
Data.Action
|
||||||
Data.areDefaultTextsAvailable
|
Data.areDefaultTextsAvailable
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
1) update version number
|
1) update version number
|
||||||
|
* changelog
|
||||||
* README
|
* README
|
||||||
* ezmlm-web.cgi
|
* ezmlm-web.cgi
|
||||||
* UPGRADING
|
* UPGRADING
|
||||||
* template/footer.cs
|
* template/footer.cs
|
||||||
|
* debian-related/changelog.Debian
|
||||||
|
* debian-related/DEBIAN/control
|
||||||
|
|
||||||
2) update changelog
|
2) create new tag
|
||||||
|
|
||||||
3) create tar.gz
|
3) create tar.gz
|
||||||
./make-tar.sh X.Y.Z
|
./make-tar.sh X.Y.Z
|
||||||
|
@ -17,3 +20,4 @@
|
||||||
scp XYZ.deb uml-bastelecke@systemausfall.org:/data/deb-repo/incoming/unstable
|
scp XYZ.deb uml-bastelecke@systemausfall.org:/data/deb-repo/incoming/unstable
|
||||||
|
|
||||||
6) update website
|
6) update website
|
||||||
|
|
||||||
|
|
|
@ -9,30 +9,16 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigAdmin) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigAdmin) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="admin" />
|
<input type="hidden" name="config_subset" value="admin" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Admin) ?>
|
||||||
|
|
||||||
<!-- enable remote administration -->
|
<!-- include default form values -->
|
||||||
<li><?cs call:checkbox("r") ?>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
<ul>
|
|
||||||
<!-- administrators may request subscribers list -->
|
|
||||||
<li><?cs call:checkbox("l") ?></li>
|
|
||||||
|
|
||||||
<!-- administrators may edit text files via mail -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<li><?cs call:checkbox("n") ?></li>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
|
|
||||||
<!-- custom path to administrators database -->
|
|
||||||
<li><?cs call:setting("9") ?><?cs if:(Data.List.Settings.8.state && Data.List.Settings.9.state) ?>(<?cs var:Lang.Misc.ModSubOverridesRemote ?>)<?cs /if ?></li>
|
|
||||||
</ul></li>
|
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -9,176 +9,16 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigAll) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigAll) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="all" />
|
<input type="hidden" name="config_subset" value="all" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Overview) ?>
|
||||||
|
|
||||||
<!-- public subsccription and archive -->
|
<!-- include default form values -->
|
||||||
<li><?cs call:checkbox("p") ?></li>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
||||||
<!-- do not require confirmation for subscription -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<li><?cs call:checkbox("h") ?></li>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
|
|
||||||
<!-- do not require confirmation for unsubscribe -->
|
|
||||||
<li><?cs call:checkbox("j") ?></li>
|
|
||||||
|
|
||||||
<!-- moderate subscription -->
|
|
||||||
<li><?cs call:checkbox("s") ?></li>
|
|
||||||
|
|
||||||
<!-- use deny list -->
|
|
||||||
<li><?cs call:checkbox("k") ?></li>
|
|
||||||
|
|
||||||
<!-- only subscribers may post -->
|
|
||||||
<li><?cs call:checkbox("u") ?></li>
|
|
||||||
|
|
||||||
<!-- require confirmation from poster -->
|
|
||||||
<li><?cs call:checkbox("y") ?></li>
|
|
||||||
|
|
||||||
<!-- posted messages are moderated -->
|
|
||||||
<li><?cs call:checkbox("m") ?></li>
|
|
||||||
|
|
||||||
<!-- only moderators may post -->
|
|
||||||
<li><?cs call:checkbox("o") ?></li>
|
|
||||||
|
|
||||||
<!-- process mailman-style requests -->
|
|
||||||
<li><?cs call:checkbox("q") ?></li>
|
|
||||||
|
|
||||||
<!-- remove ezmlm-warn -->
|
|
||||||
<li><?cs call:checkbox("w") ?></li>
|
|
||||||
|
|
||||||
<!-- archive messages -->
|
|
||||||
<li><?cs call:checkbox("a") ?></li>
|
|
||||||
|
|
||||||
<!-- only moderators may access the archive -->
|
|
||||||
<li><?cs call:checkbox("b") ?></li>
|
|
||||||
|
|
||||||
<!-- block unknown users from archive -->
|
|
||||||
<li><?cs call:checkbox("g") ?></li>
|
|
||||||
|
|
||||||
<!-- remove 'no-archive' header -->
|
|
||||||
<li><?cs call:checkbox("i") ?></li>
|
|
||||||
|
|
||||||
<!-- enable remote administration -->
|
|
||||||
<li><?cs call:checkbox("r") ?></li>
|
|
||||||
|
|
||||||
<!-- administrators may request subscribers list -->
|
|
||||||
<li><?cs call:checkbox("l") ?></li>
|
|
||||||
|
|
||||||
<!-- administrators may edit text files via mail -->
|
|
||||||
<li><?cs call:checkbox("n") ?></li>
|
|
||||||
|
|
||||||
<!-- from address -->
|
|
||||||
<li><?cs call:setting("3") ?></li>
|
|
||||||
|
|
||||||
<!-- list owner address -->
|
|
||||||
<li><?cs call:setting("5") ?></li>
|
|
||||||
|
|
||||||
<!-- mysql database -->
|
|
||||||
<?cs if:Data.Modules.mySQL ?>
|
|
||||||
<li><?cs call:setting("6") ?></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- set main list name -->
|
|
||||||
<li><?cs call:setting("0") ?></li>
|
|
||||||
|
|
||||||
<!-- messsage moderator -->
|
|
||||||
<li><?cs call:setting("7") ?></li>
|
|
||||||
|
|
||||||
<!-- custom path to subscription moderators -->
|
|
||||||
<li><?cs call:setting("8") ?></li>
|
|
||||||
|
|
||||||
<!-- custom path to remote administrators -->
|
|
||||||
<li><?cs call:setting("9") ?>(<?cs var:Lang.Misc.ModSubOverridesRemote ?>)</li>
|
|
||||||
|
|
||||||
<!-- subject prefix -->
|
|
||||||
<li><?cs call:checkbox("f") ?>
|
|
||||||
<ul><li><input type="text" name="prefix" value="<?cs
|
|
||||||
var:html_escape(Data.List.Prefix) ?>" size="70" />
|
|
||||||
</li></ul></li>
|
|
||||||
|
|
||||||
<!-- trailing text -->
|
|
||||||
<li><?cs call:checkbox("t") ?>
|
|
||||||
<?cs if:(Data.List.Options.t == 1) ?>
|
|
||||||
<!-- turn off trailaer, if "-t" is not activated, as it will be
|
|
||||||
removed during the next config_update -->
|
|
||||||
<ul><li><textarea name="trailing_text" rows="3" cols="72"><?cs
|
|
||||||
var:html_escape(Data.List.TrailingText) ?></textarea></li>
|
|
||||||
</ul></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- message size limit -->
|
|
||||||
<li><input type="checkbox" name="msgsize_max_state"
|
|
||||||
value="selected" id="msgsize_max_state" <?cs
|
|
||||||
if:Data.List.MsgSize.Max>0 ?>checked="checked"<?cs /if ?> />
|
|
||||||
<label for="msgsize_max_state"><?cs var:html_escape(Lang.Misc.MessageSize.Max) ?></label>
|
|
||||||
<ul><li><input type="text" name="msgsize_max_value" size="10"
|
|
||||||
style="text-align:right" value="<?cs
|
|
||||||
alt:Data.List.MsgSize.Max ?>30000<?cs /alt ?>" /> <?cs
|
|
||||||
var:html_escape(Lang.Misc.MessageSize.Unit) ?></li></ul></li>
|
|
||||||
<li><input type="checkbox" name="msgsize_min_state"
|
|
||||||
value="selected" id="msgsize_min_state" <?cs
|
|
||||||
if:Data.List.MsgSize.Min>0 ?>checked="checked"<?cs /if ?> />
|
|
||||||
<label for="msgsize_min_state"><?cs var:html_escape(Lang.Misc.MessageSize.Min) ?></label>
|
|
||||||
<ul><li><input type="text" name="msgsize_min_value" size="10"
|
|
||||||
style="text-align:right" value="<?cs
|
|
||||||
alt:Data.List.MsgSize.Min ?>2<?cs /alt ?>" /> <?cs
|
|
||||||
var:html_escape(Lang.Misc.MessageSize.Unit) ?></li></ul></li>
|
|
||||||
|
|
||||||
<!-- mimeremove and mimereject -->
|
|
||||||
<li><?cs call:checkbox("x") ?>
|
|
||||||
<?cs if:(Data.List.Options.x == 1) ?><ul>
|
|
||||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
|
||||||
removed during the next config_update -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.MimeReject) ?>:<br/>
|
|
||||||
<textarea name="mimereject" rows="4" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.MimeReject) ?></textarea></li>
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.MimeRemove) ?>:<br/>
|
|
||||||
<textarea name="mimeremove" rows="4" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.MimeRemove) ?></textarea></li>
|
|
||||||
</ul><?cs /if ?></li>
|
|
||||||
|
|
||||||
<!-- headerremove -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.HeaderRemove) ?>:<br/>
|
|
||||||
<ul><li><textarea name="headerremove" rows="5" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.HeaderRemove) ?></textarea></li></ul></li>
|
|
||||||
|
|
||||||
<!-- headeradd -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
|
|
||||||
<ul><li><textarea name="headeradd" rows="5" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.HeaderAdd) ?></textarea></li></ul></li>
|
|
||||||
|
|
||||||
<!-- language -->
|
|
||||||
<?cs if:subcount(Data.List.AvailableLanguages) > 0 ?>
|
|
||||||
<li><label for="list_language"><?cs var:html_escape(Lang.Misc.ListLanguage)
|
|
||||||
?>:</label>
|
|
||||||
<select name="list_language" id="list_language">
|
|
||||||
<?cs each:item = Data.List.AvailableLanguages ?>
|
|
||||||
<option <?cs if:(item == Data.List.Language)
|
|
||||||
?>selected="selected"<?cs /if ?>><?cs var:item ?></option>
|
|
||||||
<?cs /each ?>
|
|
||||||
</select></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- charset -->
|
|
||||||
<?cs if:Data.List.CharSet ?>
|
|
||||||
<li><label for="list_charset"><?cs var:html_escape(Lang.Misc.ListCharset)
|
|
||||||
?>:</label>
|
|
||||||
<input type="text" name="list_charset" id="list_charset" size="30"
|
|
||||||
value="<?cs var:Data.List.CharSet ?>" />
|
|
||||||
</li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- ezmlm-web administators -->
|
|
||||||
<?cs if:Data.WebUser.show && Data.List.WebUsers ?>
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.AllowedToEdit) ?>
|
|
||||||
<ul><li><input type="text"
|
|
||||||
name="webusers" value="<?cs var:html_escape(Data.List.WebUsers)
|
|
||||||
?>" size="40" /><br/>
|
|
||||||
</li></ul></li><?cs /if ?>
|
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -9,33 +9,16 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigArchive) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigArchive) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="archive" />
|
<input type="hidden" name="config_subset" value="archive" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Archive) ?>
|
||||||
|
|
||||||
<!-- archive messages -->
|
|
||||||
<li><?cs call:checkbox("a") ?>
|
|
||||||
<ul>
|
|
||||||
<!-- subscripiton and archive are public -->
|
|
||||||
<li><?cs call:checkbox("p") ?></li>
|
|
||||||
|
|
||||||
<!-- only moderators may access the archive -->
|
|
||||||
<li><?cs call:checkbox("b") ?></li>
|
|
||||||
|
|
||||||
<!-- block unknown users from archive -->
|
<!-- include default form values -->
|
||||||
<li><?cs call:checkbox("g") ?></li>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
</ul></li>
|
|
||||||
|
|
||||||
<!-- remove 'no-archive' header -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<li><?cs call:checkbox("i") ?></li>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -9,60 +9,16 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigMain) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigMain) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="main" />
|
<input type="hidden" name="config_subset" value="main" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Main) ?>
|
||||||
|
|
||||||
<!-- list language -->
|
<!-- include default form values -->
|
||||||
<?cs if:subcount(Data.List.AvailableLanguages) > 0 ?>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
<li><label for="list_language"><?cs var:html_escape(Lang.Misc.ListLanguage)
|
|
||||||
?>:</label>
|
|
||||||
<select name="list_language" id="list_language">
|
|
||||||
<?cs each:item = Data.List.AvailableLanguages ?>
|
|
||||||
<option <?cs if:(item == Data.List.Language)
|
|
||||||
?>selected="selected"<?cs /if ?>><?cs var:item ?></option>
|
|
||||||
<?cs /each ?>
|
|
||||||
</select></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- charset -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<?cs if:Data.List.CharSet ?>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
<li><label for="list_charset"><?cs var:html_escape(Lang.Misc.ListCharset)
|
|
||||||
?>:</label>
|
|
||||||
<input type="text" name="list_charset" id="list_charset" size="30"
|
|
||||||
value="<?cs var:Data.List.CharSet ?>" />
|
|
||||||
</li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- list owner address -->
|
|
||||||
<li><?cs call:setting("5") ?></li>
|
|
||||||
|
|
||||||
<!-- set main list name -->
|
|
||||||
<li><?cs call:setting("0") ?></li>
|
|
||||||
|
|
||||||
<!-- process mailman-style requests -->
|
|
||||||
<li><?cs call:checkbox("q") ?></li>
|
|
||||||
|
|
||||||
<!-- remove ezmlm-warn -->
|
|
||||||
<li><?cs call:checkbox("w") ?></li>
|
|
||||||
|
|
||||||
<!-- mysql database -->
|
|
||||||
<?cs if:Data.Modules.mySQL ?>
|
|
||||||
<li><?cs call:setting("6") ?></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- ezmlm-web administators -->
|
|
||||||
<?cs if:Data.WebUser.show && Data.List.WebUsers ?>
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.AllowedToEdit) ?>
|
|
||||||
<ul><li><input type="text"
|
|
||||||
name="webusers" value="<?cs var:html_escape(Data.List.WebUsers)
|
|
||||||
?>" size="40" /><br/>
|
|
||||||
</li></ul></li><?cs /if ?>
|
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- administrators may edit text files via mail -->
|
<!-- administrators may edit text files via mail -->
|
||||||
<?cs call:checkbox("n") ?>
|
<?cs call:checkbox("n") ?>
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- enable remote administration -->
|
<!-- enable remote administration -->
|
||||||
<?cs call:checkbox("r") ?>
|
<?cs call:checkbox("r") ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- administrators may request subscribers list -->
|
<!-- administrators may request subscribers list -->
|
||||||
<?cs call:checkbox("l") ?>
|
<?cs call:checkbox("l") ?>
|
||||||
|
|
7
template/config_options/admin_path.cs
Normal file
7
template/config_options/admin_path.cs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<?cs if:Data.List.Options.r ?>
|
||||||
|
<!-- custom path to remote administrators -->
|
||||||
|
<?cs call:setting("9") ?><?cs
|
||||||
|
if:((Data.List.Settings.8.state == 1) && (Data.List.Settings.9.state == 1))
|
||||||
|
?>(<?cs var:Lang.Misc.ModSubOverridesRemote ?>)<?cs /if ?>
|
||||||
|
<?cs /if ?>
|
3
template/config_options/archive_deny_unknown.cs
Normal file
3
template/config_options/archive_deny_unknown.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- block unknown users from archive -->
|
||||||
|
<?cs call:checkbox("g") ?>
|
3
template/config_options/archive_enabled.cs
Normal file
3
template/config_options/archive_enabled.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- enable archiving -->
|
||||||
|
<?cs call:checkbox("a") ?>
|
3
template/config_options/archive_mod_only.cs
Normal file
3
template/config_options/archive_mod_only.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- only moderators may access the archive -->
|
||||||
|
<?cs call:checkbox("b") ?>
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- remove 'no-archive' header -->
|
<!-- remove 'no-archive' header -->
|
||||||
<?cs call:checkbox("i") ?>
|
<?cs call:checkbox("i") ?>
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- use deny list -->
|
<!-- use deny list -->
|
||||||
<?cs call:checkbox("k") ?>
|
<?cs call:checkbox("k") ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- only moderators may post -->
|
<!-- only moderators may post -->
|
||||||
<?cs call:checkbox("o") ?>
|
<?cs call:checkbox("o") ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- block unknown users from archive -->
|
<!-- block unknown users from archive -->
|
||||||
<?cs call:checkbox("g") ?>
|
<?cs call:checkbox("g") ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- only subscribers may post -->
|
<!-- only subscribers may post -->
|
||||||
<?cs call:checkbox("u") ?>
|
<?cs call:checkbox("u") ?>
|
||||||
|
|
7
template/config_options/charset_select.cs
Normal file
7
template/config_options/charset_select.cs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- charset -->
|
||||||
|
<?cs if:Data.List.CharSet ?>
|
||||||
|
<label for="list_charset"><?cs var:html_escape(Lang.Misc.ListCharset)
|
||||||
|
?>:</label>
|
||||||
|
<input type="text" name="list_charset" id="list_charset" size="30"
|
||||||
|
value="<?cs var:Data.List.CharSet ?>" /><?cs /if ?>
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- require confirmation from poster -->
|
<!-- require confirmation from poster -->
|
||||||
<?cs call:checkbox("y") ?>
|
<?cs call:checkbox("y") ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- do not require confirmation for subscription -->
|
<!-- do not require confirmation for subscription -->
|
||||||
<?cs call:checkbox("h") ?>
|
<?cs call:checkbox("h") ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- do not require confirmation for unsubscribe -->
|
<!-- do not require confirmation for unsubscribe -->
|
||||||
<?cs call:checkbox("j") ?>
|
<?cs call:checkbox("j") ?>
|
||||||
|
|
5
template/config_options/create_listaddress.cs
Normal file
5
template/config_options/create_listaddress.cs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<label for="listaddress"><?cs var:html_escape(Lang.Misc.ListAddress) ?>:</label>
|
||||||
|
<input type="text" id="listaddress" name="inlocal" size="20"
|
||||||
|
value="<?cs var:html_escape(Data.UserName)
|
||||||
|
?>"> @ <input type="text" name="inhost" size="30" value="<?cs
|
||||||
|
var:html_escape(Data.HostName) ?>"></li>
|
2
template/config_options/create_listname.cs
Normal file
2
template/config_options/create_listname.cs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<label for="listname"><?cs var:html_escape(Lang.Misc.ListName) ?>:</label>
|
||||||
|
<input type="text" name="list" id="listname" size="25">
|
3
template/config_options/digest_enabled.cs
Normal file
3
template/config_options/digest_enabled.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- turn on digest list -->
|
||||||
|
<?cs call:checkbox("d") ?>
|
3
template/config_options/digest_settings.cs
Normal file
3
template/config_options/digest_settings.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- digest settings -->
|
||||||
|
<?cs call:setting("4") ?>
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- from address -->
|
<!-- from address -->
|
||||||
<?cs call:setting("3") ?>
|
<?cs call:setting("3") ?>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- headeradd -->
|
<!-- headeradd -->
|
||||||
<?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
|
<?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
|
||||||
<ul><li><textarea name="headeradd" rows="5" cols="70"><?cs
|
<ul><li><textarea name="headeradd" rows="5" cols="70"><?cs
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- headerremove -->
|
<!-- headerremove -->
|
||||||
<?cs var:html_escape(Lang.Misc.HeaderRemove) ?>:<br/>
|
<?cs var:html_escape(Lang.Misc.HeaderRemove) ?>:<br/>
|
||||||
<ul><li><textarea name="headerremove" rows="5" cols="70"><?cs
|
<ul><li><textarea name="headerremove" rows="5" cols="70"><?cs
|
||||||
|
|
24
template/config_options/lang_select.cs
Normal file
24
template/config_options/lang_select.cs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- list language -->
|
||||||
|
<?cs if:Data.Action != "list_create" ?>
|
||||||
|
<?cs if:subcount(Data.List.AvailableLanguages) > 0 ?>
|
||||||
|
<label for="list_language"><?cs var:html_escape(Lang.Misc.ListLanguage)
|
||||||
|
?>:</label>
|
||||||
|
<select name="list_language" id="list_language">
|
||||||
|
<?cs each:item = Data.List.AvailableLanguages ?>
|
||||||
|
<option <?cs if:(item == Data.List.Language)
|
||||||
|
?>selected="selected"<?cs /if ?>><?cs var:item ?></option>
|
||||||
|
<?cs /each ?>
|
||||||
|
</select><?cs /if ?>
|
||||||
|
<?cs else ?>
|
||||||
|
<?cs if:subcount(Data.AvailableLanguages) > 0 ?>
|
||||||
|
<label for="list_language"><?cs var:html_escape(Lang.Misc.ListLanguage)
|
||||||
|
?>:</label>
|
||||||
|
<select name="list_language" id="list_language">
|
||||||
|
<?cs each:item = Data.AvailableLanguages ?>
|
||||||
|
<option <?cs if:item == "default"
|
||||||
|
?>selected="selected"<?cs /if ?>><?cs var:item ?></option>
|
||||||
|
<?cs /each ?>
|
||||||
|
</select><?cs /if ?>
|
||||||
|
<?cs /if ?>
|
||||||
|
|
3
template/config_options/mailman_requests.cs
Normal file
3
template/config_options/mailman_requests.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- process mailman-style requests -->
|
||||||
|
<?cs call:checkbox("q") ?>
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- set main list name -->
|
<!-- set main list name -->
|
||||||
<?cs call:setting("0") ?>
|
<?cs call:setting("0") ?>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- mimeremove and mimereject -->
|
<!-- mimeremove and mimereject -->
|
||||||
<?cs call:checkbox("x") ?>
|
<?cs call:checkbox("x") ?>
|
||||||
<?cs if:(Data.List.Options.x == 1) ?><ul>
|
<?cs if:(Data.List.Options.x == 1) ?><ul>
|
||||||
|
@ -6,4 +7,3 @@
|
||||||
<?cs call:display_option('mimereject') ?>
|
<?cs call:display_option('mimereject') ?>
|
||||||
<?cs call:display_option('mimeremove') ?>
|
<?cs call:display_option('mimeremove') ?>
|
||||||
</ul><?cs /if ?>
|
</ul><?cs /if ?>
|
||||||
|
|
||||||
|
|
3
template/config_options/mimecheck.cs
Normal file
3
template/config_options/mimecheck.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- care for mime(reject|remove) -->
|
||||||
|
<?cs call:checkbox("x") ?>
|
|
@ -1,5 +1,8 @@
|
||||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
removed during the next config_update -->
|
<?cs if:Data.List.Options.x == 1 ?>
|
||||||
<?cs var:html_escape(Lang.Misc.MimeReject) ?>:<br/>
|
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
||||||
<textarea name="mimereject" rows="4" cols="70"><?cs
|
removed during the next config_update -->
|
||||||
var:html_escape(Data.List.MimeReject) ?></textarea>
|
<?cs var:html_escape(Lang.Misc.MimeReject) ?>:<br/>
|
||||||
|
<textarea name="mimereject" rows="4" cols="70"><?cs
|
||||||
|
var:html_escape(Data.List.MimeReject) ?></textarea>
|
||||||
|
<?cs /if ?>
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
removed during the next config_update -->
|
<?cs if:Data.List.Options.x == 1 ?>
|
||||||
<?cs var:html_escape(Lang.Misc.MimeRemove) ?>:<br/>
|
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
||||||
<textarea name="mimeremove" rows="4" cols="70"><?cs
|
removed during the next config_update -->
|
||||||
var:html_escape(Data.List.MimeRemove) ?></textarea>
|
<?cs var:html_escape(Lang.Misc.MimeRemove) ?>:<br/>
|
||||||
|
<textarea name="mimeremove" rows="4" cols="70"><?cs
|
||||||
|
var:html_escape(Data.List.MimeRemove) ?></textarea>
|
||||||
|
<?cs /if ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- posted messages are moderated -->
|
<!-- posted messages are moderated -->
|
||||||
<?cs call:checkbox("m") ?>
|
<?cs call:checkbox("m") ?>
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
<!-- messsage moderator path -->
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<?cs call:setting("7") ?>
|
<?cs if:Data.List.Options.m ?>
|
||||||
|
<!-- messsage moderator path -->
|
||||||
|
<?cs call:setting("7") ?>
|
||||||
|
<?cs /if ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- moderate subscription -->
|
<!-- moderate subscription -->
|
||||||
<?cs call:checkbox("s") ?>
|
<?cs call:checkbox("s") ?>
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
<!-- custom path to subscription moderators -->
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<?cs call:setting("8") ?>
|
<?cs if:Data.List.Options.s ?>
|
||||||
|
<!-- custom path to subscription moderators -->
|
||||||
|
<?cs call:setting("8") ?>
|
||||||
|
<?cs /if ?>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- message size limit -->
|
<!-- message size limit -->
|
||||||
<input type="checkbox" name="msgsize_max_state"
|
<input type="checkbox" name="msgsize_max_state"
|
||||||
value="selected" id="msgsize_max_state" <?cs
|
value="selected" id="msgsize_max_state" <?cs
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- message size limit -->
|
<!-- message size limit -->
|
||||||
<input type="checkbox" name="msgsize_min_state"
|
<input type="checkbox" name="msgsize_min_state"
|
||||||
value="selected" id="msgsize_min_state" <?cs
|
value="selected" id="msgsize_min_state" <?cs
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
<!-- mysql database -->
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<?cs call:setting("6") ?>
|
<?cs if:Data.Modules.mySQL ?>
|
||||||
|
<!-- mysql database -->
|
||||||
|
<?cs call:setting("6") ?><?cs /if ?>
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- list owner address -->
|
<!-- list owner address -->
|
||||||
<?cs call:setting("5") ?>
|
<?cs call:setting("5") ?>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- subject prefix -->
|
<!-- subject prefix -->
|
||||||
<?cs call:checkbox("f") ?>
|
<?cs call:checkbox("f") ?>
|
||||||
<ul><li><input type="text" name="prefix" value="<?cs
|
<ul><li><input type="text" name="prefix" value="<?cs
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- public subsccription and archive -->
|
<!-- public subsccription and archive -->
|
||||||
<?cs call:checkbox("p") ?>
|
<?cs call:checkbox("p") ?>
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- trailing text -->
|
<!-- trailing text -->
|
||||||
<?cs call:checkbox("t") ?>
|
<?cs call:checkbox("t") ?>
|
||||||
<?cs if:(Data.List.Options.t == 1) ?>
|
<?cs if:(Data.List.Options.t == 1) ?>
|
||||||
<!-- turn off trailaer, if "-t" is not activated, as it will be
|
<!-- turn off trailer, if "-t" is not activated, as it will be
|
||||||
removed during the next config_update -->
|
removed during the next config_update -->
|
||||||
<ul><li><textarea name="trailing_text" rows="3" cols="72"><?cs
|
<ul><li><textarea name="trailing_text" rows="3" cols="72"><?cs
|
||||||
var:html_escape(Data.List.TrailingText) ?></textarea></li>
|
var:html_escape(Data.List.TrailingText) ?></textarea></li>
|
||||||
|
|
3
template/config_options/warn_remove.cs
Normal file
3
template/config_options/warn_remove.cs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
|
<!-- remove ezmlm-warn -->
|
||||||
|
<?cs call:checkbox("w") ?>
|
|
@ -1,7 +1,10 @@
|
||||||
|
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||||
<!-- ezmlm-web administators -->
|
<!-- ezmlm-web administators -->
|
||||||
<?cs var:html_escape(Lang.Misc.AllowedToEdit) ?>
|
<?cs var:html_escape(Lang.Misc.AllowedToEdit) ?>
|
||||||
<ul><li><input type="text"
|
<ul><li><input type="text"
|
||||||
name="webusers" value="<?cs var:html_escape(Data.List.WebUsers)
|
name="webusers" value="<?cs if:Data.List.WebUsers
|
||||||
?>" size="40" /><br/>
|
?>var:html_escape(Data.List.WebUsers) ?><?cs
|
||||||
|
else ?><?cs
|
||||||
|
var:html_escape(Data.WebUser.UserName)
|
||||||
|
?><?cs /if ?>" size="40" /><br/>
|
||||||
</li></ul>
|
</li></ul>
|
||||||
|
|
||||||
|
|
|
@ -9,64 +9,16 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigPosting) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigPosting) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="posting" />
|
<input type="hidden" name="config_subset" value="posting" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Posting) ?>
|
||||||
|
|
||||||
<!-- use deny list -->
|
<!-- include default form values -->
|
||||||
<li><?cs call:checkbox("k") ?></li>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
||||||
<!-- only subscribers may post -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<li><?cs call:checkbox("u") ?></li>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
|
|
||||||
<!-- require confirmation from poster -->
|
|
||||||
<li><?cs call:checkbox("y") ?></li>
|
|
||||||
|
|
||||||
<!-- posted messages are moderated -->
|
|
||||||
<li><?cs call:checkbox("m") ?>
|
|
||||||
<ul>
|
|
||||||
<!-- only moderators may post -->
|
|
||||||
<li><?cs call:checkbox("o") ?></li>
|
|
||||||
|
|
||||||
<!-- nesage moderator -->
|
|
||||||
<li><?cs call:setting("7") ?></li>
|
|
||||||
</ul></li>
|
|
||||||
|
|
||||||
<!-- message size limit -->
|
|
||||||
<li><input type="checkbox" name="msgsize_max_state"
|
|
||||||
value="selected" id="msgsize_max_state" <?cs
|
|
||||||
if:Data.List.MsgSize.Max>0 ?>checked="checked"<?cs /if ?> />
|
|
||||||
<label for="msgsize_max_state"><?cs var:html_escape(Lang.Misc.MessageSize.Max) ?></label>
|
|
||||||
<ul><li><input type="text" name="msgsize_max_value" size="10"
|
|
||||||
style="text-align:right" value="<?cs
|
|
||||||
alt:Data.List.MsgSize.Max ?>30000<?cs /alt ?>" /> <?cs
|
|
||||||
var:html_escape(Lang.Misc.MessageSize.Unit) ?></li></ul></li>
|
|
||||||
<li><input type="checkbox" name="msgsize_min_state"
|
|
||||||
value="selected" id="msgsize_min_state" <?cs
|
|
||||||
if:Data.List.MsgSize.Min>0 ?>checked="checked"<?cs /if ?> />
|
|
||||||
<label for="msgsize_min_state"><?cs var:html_escape(Lang.Misc.MessageSize.Min) ?></label>
|
|
||||||
<ul><li><input type="text" name="msgsize_min_value" size="10"
|
|
||||||
style="text-align:right" value="<?cs
|
|
||||||
alt:Data.List.MsgSize.Min ?>2<?cs /alt ?>" /> <?cs
|
|
||||||
var:html_escape(Lang.Misc.MessageSize.Unit) ?></li></ul></li>
|
|
||||||
|
|
||||||
<!-- mimeremove and mimereject -->
|
|
||||||
<li><?cs call:checkbox("x") ?>
|
|
||||||
<?cs if:(Data.List.Options.x == 1) ?><ul>
|
|
||||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
|
||||||
removed during the next config_update -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.MimeReject) ?>:<br/>
|
|
||||||
<textarea name="mimereject" rows="4" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.MimeReject) ?></textarea></li>
|
|
||||||
</ul></li><?cs /if ?>
|
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -9,56 +9,17 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigProcess) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigProcess) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="processing" />
|
<input type="hidden" name="config_subset" value="processing" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Processing) ?>
|
||||||
|
|
||||||
<!-- subject prefix -->
|
<!-- include default form values -->
|
||||||
<li><?cs call:checkbox("f") ?>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
<ul><li><input type="text" name="prefix" value="<?cs
|
|
||||||
var:html_escape(Data.List.Prefix) ?>" size="70" />
|
|
||||||
</li></ul></li>
|
|
||||||
|
|
||||||
<!-- trailing text -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<li><?cs call:checkbox("t") ?>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
<?cs if:(Data.List.Options.t == 1) ?>
|
|
||||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
|
||||||
removed during the next config_update -->
|
|
||||||
<ul><li><textarea name="trailing_text" rows="3" cols="72"><?cs
|
|
||||||
var:html_escape(Data.List.TrailingText) ?></textarea></li>
|
|
||||||
</ul></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- from address -->
|
|
||||||
<li><?cs call:setting("3") ?></li>
|
|
||||||
|
|
||||||
<!-- mimeremove and mimereject -->
|
|
||||||
<li><?cs call:checkbox("x") ?>
|
|
||||||
<?cs if:(Data.List.Options.x == 1) ?><ul>
|
|
||||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
|
||||||
removed during the next config_update -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.MimeRemove) ?>:<br/>
|
|
||||||
<textarea name="mimeremove" rows="4" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.MimeRemove) ?></textarea></li>
|
|
||||||
</ul></li><?cs /if ?>
|
|
||||||
|
|
||||||
<!-- headerremove -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.HeaderRemove) ?>:<br/>
|
|
||||||
<ul><li><textarea name="headerremove" rows="5" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.HeaderRemove) ?></textarea></li></ul></li>
|
|
||||||
|
|
||||||
<!-- headeradd -->
|
|
||||||
<li><?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
|
|
||||||
<ul><li><textarea name="headeradd" rows="5" cols="70"><?cs
|
|
||||||
var:html_escape(Data.List.HeaderAdd) ?></textarea></li></ul></li>
|
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
@ -9,33 +9,16 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ConfigSub) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ConfigSub) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="config_subset" value="subscription" />
|
<input type="hidden" name="config_subset" value="subscription" />
|
||||||
|
|
||||||
<ul>
|
<?cs call:show_options(UI.Options.Config.Subscription) ?>
|
||||||
|
|
||||||
<!-- public subsccription and archive -->
|
<!-- include default form values -->
|
||||||
<li><?cs call:checkbox("p") ?></li>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
||||||
<!-- do not require confirmation for subscription -->
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<li><?cs call:checkbox("h") ?></li>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
|
|
||||||
<!-- do not require confirmation for unsubscribe -->
|
|
||||||
<li><?cs call:checkbox("j") ?></li>
|
|
||||||
|
|
||||||
<!-- moderate subscription -->
|
|
||||||
<li><?cs call:checkbox("s") ?>
|
|
||||||
<ul>
|
|
||||||
<!-- custom path to subscription moderators -->
|
|
||||||
<li><?cs call:setting("8") ?><?cs if:(Data.List.Settings.8.state && Data.List.Settings.9.state) ?>(<?cs var:Lang.Misc.ModSubOverridesRemote ?>)<?cs /if ?></li>
|
|
||||||
</ul></li>
|
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
|
||||||
|
|
||||||
<input type="hidden" name="action" value="config_do" />
|
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<a href="https://systemausfall.org/toolforge/ezmlm-web">ezmlm-web</a> (v3.1) - <?cs var:html_escape(Lang.Misc.FooterText) ?> <a href="http://www.ezmlm.org/" target="_blank">ezmlm</a>
|
<a href="https://systemausfall.org/toolforge/ezmlm-web">ezmlm-web</a> (v3.1.1) - <?cs var:html_escape(Lang.Misc.FooterText) ?> <a href="http://www.ezmlm.org/" target="_blank">ezmlm</a>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -5,40 +5,9 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ListCreate) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ListCreate) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<ul>
|
|
||||||
<li><label for="listname"><?cs var:html_escape(Lang.Misc.ListName) ?>:</label>
|
<?cs call:show_options(UI.Options.Create) ?>
|
||||||
<input type="text" name="list" id="listname" size="25"></li>
|
|
||||||
|
|
||||||
<li><label for="listaddress"><?cs var:html_escape(Lang.Misc.ListAddress) ?>:</label>
|
|
||||||
<input type="text" id="listaddress" name="inlocal" size="20"
|
|
||||||
value="<?cs var:html_escape(Data.UserName)
|
|
||||||
?>"> @ <input type="text" name="inhost" size="30" value="<?cs
|
|
||||||
var:html_escape(Data.HostName) ?>"></li>
|
|
||||||
|
|
||||||
<?cs if:subcount(Data.AvailableLanguages) > 0 ?>
|
|
||||||
<li><label for="list_language"><?cs var:html_escape(Lang.Misc.ListLanguage)
|
|
||||||
?>:</label>
|
|
||||||
<select name="list_language" id="list_language">
|
|
||||||
<?cs each:item = Data.AvailableLanguages ?>
|
|
||||||
<option <?cs if:(item == 'default')
|
|
||||||
?>selected="selected"<?cs /if ?>><?cs var:item ?></option>
|
|
||||||
<?cs /each ?>
|
|
||||||
</select></li><?cs /if ?>
|
|
||||||
|
|
||||||
<?cs if:Data.Modules.MySQL ?>
|
|
||||||
<!-- Allow creation of mysql table if the module allows it -->
|
|
||||||
<li><?cs call:setting("6") ?></li><?cs /if ?>
|
|
||||||
|
|
||||||
|
|
||||||
<?cs if:Data.WebUser.show ?>
|
|
||||||
<li><label for="webusers"><?cs var:html_escape(Lang.Misc.AllowedToEdit) ?></label>
|
|
||||||
<ul><li><input type="text" id="webusers"
|
|
||||||
name="webusers" size="30" value="<?cs
|
|
||||||
var:html_escape(Data.WebUser.UserName) ?>"></li></ul></li>
|
|
||||||
<?cs /if ?>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- include default form values -->
|
<!-- include default form values -->
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<legend><?cs var:html_escape(Lang.Legend.ListDelete) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.ListDelete) ?> </legend>
|
||||||
|
|
||||||
<p><?cs var:Lang.Misc.ConfirmDelete ?></p>
|
<p><?cs var:Lang.Misc.ConfirmDelete ?></p>
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||||
|
|
||||||
<input type="hidden" name="action" value="list_delete_do" />
|
<input type="hidden" name="action" value="list_delete_do" />
|
||||||
|
|
|
@ -24,7 +24,9 @@
|
||||||
<?cs loop: y = #0, columns-1, #1 ?>
|
<?cs loop: y = #0, columns-1, #1 ?>
|
||||||
<td>
|
<td>
|
||||||
<?cs set:listname = Data.Lists[y * col_len + x] ?><?cs
|
<?cs set:listname = Data.Lists[y * col_len + x] ?><?cs
|
||||||
if:listname ?><a href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(listname) ?>&action=subscribers" title="<?cs var:html_escape(listname) ?>"><?cs call:limit_string_len(html_escape(listname),18) ?></a>
|
if:listname ?><a href="<?cs call:link("list",listname,"action","subscribers",
|
||||||
|
"","") ?>" title="<?cs var:html_escape(listname) ?>"><?cs
|
||||||
|
call:limit_string_len(html_escape(listname),18) ?></a>
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
</td>
|
</td>
|
||||||
<?cs /loop ?>
|
<?cs /loop ?>
|
||||||
|
|
|
@ -1,57 +1,97 @@
|
||||||
<?cs def:checkbox(option)
|
<?cs def:checkbox(option)
|
||||||
?><?cs if:Lang.Options[option]
|
?><?cs if:Lang.Options[option]
|
||||||
?><input type="checkbox" name="option_<?cs var:option ?>"
|
?><input type="checkbox" name="option_<?cs var:option ?>" id="option_<?cs
|
||||||
id="option_<?cs var:option ?>" value="selected" <?cs
|
var:option ?>" value="selected" <?cs
|
||||||
if:(Data.List.Options[option] == 1) ?>checked="checked"<?cs /if ?> />
|
if:(Data.List.Options[option] == 1) ?>checked="checked"<?cs
|
||||||
<label for="option_<?cs var:option ?>"><?cs var:html_escape(Lang.Options[option])
|
/if ?> /> <label for="option_<?cs var:option ?>"><?cs
|
||||||
|
var:html_escape(Lang.Options[option])
|
||||||
?></label><?cs
|
?></label><?cs
|
||||||
set:available_options = available_options + option ?><?cs
|
set:available_options = available_options + option ?><?cs
|
||||||
else ?>unknown option (<?cs var:option ?>)<?cs /if ?><?cs
|
else ?>unknown option (<?cs var:option ?>)<?cs /if ?><?cs
|
||||||
/def ?>
|
/def ?><?cs
|
||||||
|
|
||||||
<?cs def:setting(setting)
|
def:setting(setting)
|
||||||
?><?cs if:Lang.Settings[setting]
|
?><?cs if:Lang.Settings[setting]
|
||||||
?><input type="checkbox" name="setting_state_<?cs var:setting
|
?><input type="checkbox" name="setting_state_<?cs var:setting
|
||||||
?>" id="setting_state_<?cs var:setting ?>" value="selected" <?cs
|
?>" id="setting_state_<?cs var:setting ?>" value="selected" <?cs
|
||||||
if:(Data.List.Settings[setting].state == 1) ?>checked="checked"<?cs /if ?> />
|
if:(Data.List.Settings[setting].state == 1) ?>checked="checked"<?cs /if
|
||||||
<label for="setting_state_<?cs var:setting ?>"><?cs
|
?> /> <label for="setting_state_<?cs var:setting ?>"><?cs
|
||||||
var:html_escape(Lang.Settings[setting]) ?></label>
|
var:html_escape(Lang.Settings[setting])
|
||||||
<ul><li><input type="text" name="setting_value_<?cs var:setting
|
?></label><ul><li><input type="text" name="setting_value_<?cs var:setting
|
||||||
?>" id="setting_value_<?cs var:setting ?>" value="<?cs
|
?>" id="setting_value_<?cs var:setting ?>" value="<?cs
|
||||||
var:html_escape(Data.List.Settings[setting].value) ?>" size="30" /></li></ul><?cs
|
var:html_escape(Data.List.Settings[setting].value) ?>" size="30" /></li></ul><?cs
|
||||||
set:available_settings = available_settings + setting ?><?cs
|
set:available_settings = available_settings + setting ?><?cs
|
||||||
else ?>unknown setting (<?cs var:setting ?>)<?cs /if ?><?cs
|
else ?>unknown setting (<?cs var:setting ?>)<?cs /if ?><?cs
|
||||||
/def ?>
|
/def ?><?cs
|
||||||
|
|
||||||
<?cs def:warning(warntext)
|
def:warning(warntext)
|
||||||
?><div class="warning">
|
?><div class="warning"><?cs alt:warntext ?>unknown warning message (<?cs
|
||||||
<?cs alt:warntext ?>unknown warning message (<?cs
|
var:Data.Warning ?>)<?cs /alt ?></div><?cs
|
||||||
var:Data.Warning ?>)<?cs /alt ?>
|
/def ?><?cs
|
||||||
</div><?cs
|
|
||||||
/def ?>
|
|
||||||
|
|
||||||
<?cs def:error(errtext)
|
def:error(errtext)
|
||||||
?><div class="error">
|
?><div class="error">
|
||||||
<?cs alt:errtext ?>unknown error message (<?cs
|
<?cs alt:errtext ?>unknown error message (<?cs
|
||||||
var:Data.Error ?>)<?cs /alt ?>
|
var:Data.Error ?>)<?cs /alt ?></div><?cs
|
||||||
</div><?cs
|
/def ?><?cs
|
||||||
/def ?>
|
|
||||||
|
|
||||||
<?cs def:success(succtext)
|
def:success(succtext)
|
||||||
?><div class="success">
|
?><div class="success">
|
||||||
<?cs alt:succtext ?>unknown success message (<?cs
|
<?cs alt:succtext ?>unknown success message (<?cs
|
||||||
var:Data.Success ?>)<?cs /alt ?>
|
var:Data.Success ?>)<?cs /alt ?></div><?cs
|
||||||
</div><?cs
|
/def ?><?cs
|
||||||
/def ?>
|
|
||||||
|
|
||||||
<?cs def:limit_string_len(text,limit)
|
def:limit_string_len(text,limit)
|
||||||
?><?cs set:text2 = text ?><?cs set:len = string.length(text2) ?><?cs
|
?><?cs set:text2 = text ?><?cs set:len = string.length(text2) ?><?cs
|
||||||
if:len > limit ?><?cs
|
if:len > limit ?><?cs
|
||||||
var:string.slice(text,0,limit / #2 + limit % #2 - 1) ?>...<?cs
|
var:string.slice(text,0,limit / #2 + limit % #2 - 1) ?>...<?cs
|
||||||
var:string.slice(text,len - limit / #2 + #3 - #1, len) ?><?cs
|
var:string.slice(text,len - limit / #2 + #3 - #1, len) ?><?cs
|
||||||
else ?><?cs var:text ?><?cs /if ?><?cs
|
else ?><?cs var:text ?><?cs /if ?><?cs
|
||||||
/def ?>
|
/def ?><?cs
|
||||||
|
|
||||||
<?cs def:display_option(optname)
|
def:show_options(element)
|
||||||
?><?cs linclude:TemplateDir + "/config_options/" + optname + ".cs" ?><?cs
|
?><?cs if:subcount(element) == 0 ?><li><?cs
|
||||||
|
linclude:TemplateDir + '/config_options/' + element + '.cs' ?></li><?cs
|
||||||
|
else ?><?cs if:element["Self"] ?><li><?cs
|
||||||
|
linclude:TemplateDir + '/config_options/' + element["Self"] + '.cs' ?><?cs
|
||||||
|
/if ?><ul><?cs each:opts = element ?><?cs if:name(opts) != "Self" ?><?cs
|
||||||
|
call:show_options(opts) ?><?cs
|
||||||
|
/if ?><?cs /each
|
||||||
|
?></ul><?cs if:element["Self"] ?></li><?cs /if ?><?cs
|
||||||
|
/if ?><?cs
|
||||||
|
/def ?><?cs
|
||||||
|
|
||||||
|
def:is_substring(text_in, search_in)
|
||||||
|
?><?cs set:text = text_in
|
||||||
|
?><?cs set:search = search_in
|
||||||
|
?><?cs set:found = 0
|
||||||
|
?><?cs loop: index = #0, string.length(text), #1
|
||||||
|
?><?cs if:string.slice(text, index, index + string.length(search) - #1) == searchi
|
||||||
|
?><?cs set:found = 1 ?><?cs /if
|
||||||
|
?><?cs /loop ?><?cs
|
||||||
|
/def ?><?cs
|
||||||
|
|
||||||
|
def:link(attr1, value1, attr2, value2, attr3, value3)
|
||||||
|
?><?cs each:attrs = Temp
|
||||||
|
?><?cs set:attrs = ""
|
||||||
|
?><?cs /each
|
||||||
|
?><?cs each:attrs = Config.UI.LinkAttrs
|
||||||
|
?><?cs set:Temp[name(attrs)] = attrs
|
||||||
|
?><?cs /each
|
||||||
|
?><?cs if:attr1 != "" ?><?cs set:Temp[attr1] = value1 ?><?cs /if
|
||||||
|
?><?cs if:attr2 != "" ?><?cs set:Temp[attr2] = value2 ?><?cs /if
|
||||||
|
?><?cs if:attr3 != "" ?><?cs set:Temp[attr3] = value3 ?><?cs /if
|
||||||
|
?><?cs var:ScriptName
|
||||||
|
?><?cs set:first_each = 1
|
||||||
|
?><?cs if:subcount(Temp) > 0
|
||||||
|
?><?cs each:attrs = Temp
|
||||||
|
?><?cs if:(name(attrs) != "") && (attrs != "")
|
||||||
|
?><?cs if:first_each == 1 ?><?cs
|
||||||
|
set:first_each = 0 ?>?<?cs
|
||||||
|
else
|
||||||
|
?>&<?cs /if
|
||||||
|
?><?cs var:url_escape(name(attrs)) ?>=<?cs var:url_escape(attrs)
|
||||||
|
?><?cs /if
|
||||||
|
?><?cs /each
|
||||||
|
?><?cs /if ?><?cs
|
||||||
/def ?>
|
/def ?>
|
||||||
|
|
134
template/nav.cs
134
template/nav.cs
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<div id="nav_bar">
|
<div id="nav_bar">
|
||||||
<ul>
|
<ul>
|
||||||
<?cs if:(subcount(Data.Lists) > 0) ?>
|
<?cs if:(subcount(Data.Lists) > 0) && (UI.Navigation.ListSelect == 1) ?>
|
||||||
<li><a <?cs if:(Data.Action == "list_select") ?> class="nav_active"<?cs /if ?>
|
<li><a <?cs if:(Data.Action == "list_select") ?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?action=list_select"
|
href="<?cs call:link("action","list_select","","","","") ?>"
|
||||||
title="<?cs var:html_escape(Lang.Menue.ListSelect) ?>"><?cs var:html_escape(Lang.Menue.ListSelect) ?></a>
|
title="<?cs var:html_escape(Lang.Menue.ListSelect) ?>"><?cs var:html_escape(Lang.Menue.ListSelect) ?></a>
|
||||||
</li>
|
</li>
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
<?cs if:Data.Permissions.Create ?>
|
<?cs if:Data.Permissions.Create && (UI.Navigation.ListCreate == 1) ?>
|
||||||
<li><a <?cs if:(Data.Action == "list_create") ?> class="nav_active"<?cs /if ?>
|
<li><a <?cs if:(Data.Action == "list_create") ?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?action=list_create_ask"
|
href="<?cs call:link("action","list_create_ask","","","","") ?>"
|
||||||
title="<?cs var:html_escape(Lang.Menue.ListCreate) ?>"><?cs var:html_escape(Lang.Menue.ListCreate) ?></a>
|
title="<?cs var:html_escape(Lang.Menue.ListCreate) ?>"><?cs var:html_escape(Lang.Menue.ListCreate) ?></a>
|
||||||
</li>
|
</li>
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
|
@ -18,53 +18,119 @@
|
||||||
|
|
||||||
<?cs if:Data.List.Name ?>
|
<?cs if:Data.List.Name ?>
|
||||||
|
|
||||||
<li><font class="no_link"><?cs var:html_escape(Lang.Menue.Properties) ?> <?cs call:limit_string_len(html_escape(Data.List.Name),25) ?></font><ul>
|
<li><font class="no_link"><?cs var:html_escape(Lang.Menue.Properties) ?> <?cs call:limit_string_len(html_escape(Data.List.Name),25) ?></font><ul><li>
|
||||||
<li><a <?cs if:((Data.Action == "subscribers") && ((Data.List.PartType == "") || !Data.List.PartType)) ?>class="nav_active"<?cs /if ?>
|
<?cs if:UI.Navigation.Subscribers.Subscribers == 1
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=subscribers" title="<?cs var:html_escape(Lang.Menue.Subscribers) ?>"><?cs var:html_escape(Lang.Menue.Subscribers) ?></a>
|
?><a <?cs if:((Data.Action == "subscribers")
|
||||||
|
&& ((Data.List.PartType == "") || !Data.List.PartType))
|
||||||
|
?>class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","subscribers","","") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.Subscribers) ?>"><?cs
|
||||||
|
else ?><font class="no_link"><?cs /if ?><?cs
|
||||||
|
var:html_escape(Lang.Menue.Subscribers) ?><?cs
|
||||||
|
if:UI.Navigation.Subscribers.Subscribers == 1 ?></a><?cs else ?></font><?cs
|
||||||
|
/if ?>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
<?cs if:UI.Navigation.Subscribers.Allow == 1
|
||||||
|
?><li><a <?cs if:((Data.Action == "subscribers") &&
|
||||||
(Data.List.PartType == "allow")) ?>class="nav_active"<?cs /if ?>
|
(Data.List.PartType == "allow")) ?>class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=subscribers&part=allow"><?cs var:html_escape(Lang.Menue.AllowList) ?></a></li>
|
href="<?cs call:link("list",Data.List.Name,"action","subscribers",
|
||||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
"part","allow") ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.AllowList) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Subscribers.Deny == 1
|
||||||
|
?><li><a <?cs if:((Data.Action == "subscribers") &&
|
||||||
(Data.List.PartType == "deny")) ?> class="nav_active"<?cs /if ?>
|
(Data.List.PartType == "deny")) ?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=subscribers&part=deny"><?cs var:html_escape(Lang.Menue.DenyList) ?></a></li>
|
href="<?cs call:link("list",Data.List.Name,"action","subscribers",
|
||||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
"part","deny") ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.DenyList) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Subscribers.Digest == 1
|
||||||
|
?><li><a <?cs if:((Data.Action == "subscribers") &&
|
||||||
(Data.List.PartType == "digest")) ?> class="nav_active"<?cs /if ?>
|
(Data.List.PartType == "digest")) ?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=subscribers&part=digest"><?cs var:html_escape(Lang.Menue.DigestList) ?></a></li>
|
href="<?cs call:link("list",Data.List.Name,"action","subscribers",
|
||||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
"part","digest") ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.DigestList) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Subscribers.Moderators == 1
|
||||||
|
?><li><a <?cs if:((Data.Action == "subscribers") &&
|
||||||
(Data.List.PartType == "mod")) ?> class="nav_active"<?cs /if ?>
|
(Data.List.PartType == "mod")) ?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=subscribers&part=mod"><?cs var:html_escape(Lang.Menue.ModList) ?></a></li>
|
href="<?cs call:link("list",Data.List.Name,"action","subscribers",
|
||||||
|
"part","mod") ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ModList) ?></a></li><?cs /if ?>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li><a <?cs if:(Data.Action == "config_main") ?> class="nav_active"<?cs /if ?>
|
<li><?cs if:UI.Navigation.Config.Main == 1
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=main" title="<?cs var:html_escape(Lang.Menue.ConfigMain) ?>"><?cs var:html_escape(Lang.Menue.ConfigMain) ?></a>
|
?><a <?cs if:(Data.Action == "config_main") ?> class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
|
"config_subset","main") ?>" title="<?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigMain) ?>"><?cs
|
||||||
|
else ?><font class="no_link"><?cs /if ?><?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigMain) ?><?cs
|
||||||
|
if UI.Navigation.Config.Main == 1 ?></a><?cs else ?></font><?cs /if ?>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a <?cs if:(Data.Action == "config_subscription") ?> class="nav_active"<?cs /if ?>
|
<?cs if:UI.Navigation.Config.Subscription == 1
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=subscription" title="<?cs var:html_escape(Lang.Menue.ConfigSub) ?>"><?cs var:html_escape(Lang.Menue.ConfigSub) ?></a></li>
|
?><li><a <?cs if:(Data.Action == "config_subscription")
|
||||||
<li><a <?cs if:(Data.Action == "config_posting") ?> class="nav_active"<?cs /if ?>
|
?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=posting" title="<?cs var:html_escape(Lang.Menue.ConfigPost) ?>"><?cs var:html_escape(Lang.Menue.ConfigPost) ?></a></li>
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
<li><a <?cs if:(Data.Action == "config_processing") ?> class="nav_active"<?cs /if ?>
|
"config_subset","subscription") ?>"
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=processing" title="<?cs var:html_escape(Lang.Menue.ConfigProcess) ?>"><?cs var:html_escape(Lang.Menue.ConfigProcess) ?></a></li>
|
title="<?cs var:html_escape(Lang.Menue.ConfigSub) ?>"><?cs
|
||||||
<li><a <?cs if:(Data.Action == "config_archive") ?> class="nav_active"<?cs /if ?>
|
var:html_escape(Lang.Menue.ConfigSub) ?></a></li><?cs /if ?>
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=archive" title="<?cs var:html_escape(Lang.Menue.ConfigArchive) ?>"><?cs var:html_escape(Lang.Menue.ConfigArchive) ?></a></li>
|
<?cs if:UI.Navigation.Config.Posting == 1
|
||||||
<li><a <?cs if:(Data.Action == "config_admin") ?> class="nav_active"<?cs /if ?>
|
?><li><a <?cs if:(Data.Action == "config_posting")
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=admin" title="<?cs var:html_escape(Lang.Menue.ConfigAdmin) ?>"><?cs var:html_escape(Lang.Menue.ConfigAdmin) ?></a></li>
|
?> class="nav_active"<?cs /if ?>
|
||||||
<li><a <?cs if:(Data.Action == "config_all") ?> class="nav_active"<?cs /if ?>
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=config_ask&config_subset=all" title="<?cs var:html_escape(Lang.Menue.ConfigAll) ?>"><?cs var:html_escape(Lang.Menue.ConfigAll) ?></a></li>
|
"config_subset","posting") ?>" title="<?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigPost) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigPost) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Config.Processing == 1
|
||||||
|
?><li><a <?cs if:(Data.Action == "config_processing")
|
||||||
|
?> class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
|
"config_subset","processing") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.ConfigProcess) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigProcess) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Config.Archive == 1
|
||||||
|
?><li><a <?cs if:(Data.Action == "config_archive") ?>
|
||||||
|
class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
|
"config_subset","archive") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.ConfigArchive) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigArchive) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Config.Admin == 1
|
||||||
|
?><li><a <?cs if:(Data.Action == "config_admin") ?>
|
||||||
|
class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
|
"config_subset","admin") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.ConfigAdmin) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigAdmin) ?></a></li><?cs /if ?>
|
||||||
|
<?cs if:UI.Navigation.Config.All == 1
|
||||||
|
?><li><a <?cs if:(Data.Action == "config_all") ?>
|
||||||
|
class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
|
||||||
|
"config_subset","all") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.ConfigAll) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ConfigAll) ?></a></li><?cs /if ?>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
|
||||||
<li><a <?cs if:((Data.Action == "textfiles") || (Data.Action == "textfile_edit")) ?> class="nav_active"<?cs /if ?>
|
<?cs if:UI.Navigation.TextEdit == 1
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=textfiles" title="<?cs var:html_escape(Lang.Menue.TextFiles) ?>"><?cs var:html_escape(Lang.Menue.TextFiles) ?></a></li>
|
?><li><a <?cs if:((Data.Action == "textfiles")
|
||||||
|
|| (Data.Action == "textfile_edit")) ?> class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","textfiles","","") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.TextFiles) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.TextFiles) ?></a></li><?cs /if ?>
|
||||||
|
|
||||||
<li><a <?cs if:(Data.Action == "list_delete") ?> class="nav_active"<?cs /if ?>
|
<?cs if:UI.Navigation.ListDelete == 1
|
||||||
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&action=list_delete_ask" title="<?cs var:html_escape(Lang.Menue.ListDelete) ?>"><?cs var:html_escape(Lang.Menue.ListDelete) ?></a></li>
|
?><li><a <?cs if:(Data.Action == "list_delete") ?> class="nav_active"<?cs /if ?>
|
||||||
|
href="<?cs call:link("list",Data.List.Name,"action","list_delete_ask","","") ?>"
|
||||||
|
title="<?cs var:html_escape(Lang.Menue.ListDelete) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.ListDelete) ?></a></li><?cs /if ?>
|
||||||
|
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
|
|
||||||
<li><a href="http://www.ezmlm.org/ezman/index.html#toc1" target="_blank" title="<?cs var:html_escape(Lang.Misc.HelpLink) ?>"><?cs var:html_escape(Lang.Menue.Help) ?></a></li>
|
<?cs if:UI.Navigation.Help
|
||||||
|
?><li><a href="http://www.ezmlm.org/ezman/index.html#toc1" target="_blank"
|
||||||
|
title="<?cs var:html_escape(Lang.Misc.HelpLink) ?>"><?cs
|
||||||
|
var:html_escape(Lang.Menue.Help) ?></a></li><?cs /if ?>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
|
@ -26,45 +26,35 @@
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
|
|
||||||
|
|
||||||
<?cs if:((Data.List.PartType == "digest") || (Data.List.PartType == "deny") || (Data.List.PartType == 'mod')) ?>
|
<?cs if:( ((Data.List.PartType == "digest")
|
||||||
|
&& (subcount(UI.Options.Subscribers.Digest) >0))
|
||||||
|
|| ((Data.List.PartType == "deny")
|
||||||
|
&& (subcount(UI.Options.Subscribers.Deny) >0))
|
||||||
|
|| ((Data.List.PartType == 'mod')
|
||||||
|
&& (subcount(UI.Options.Subscribers.Moderators) >0))) ?>
|
||||||
|
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.RelevantOptions) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.RelevantOptions) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
|
|
||||||
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
|
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
|
||||||
|
|
||||||
<ul>
|
|
||||||
<?cs if:(Data.List.PartType == "digest") ?>
|
<?cs if:(Data.List.PartType == "digest") ?>
|
||||||
<li><?cs call:checkbox("d") ?></li>
|
<?cs call:show_options(UI.Options.Subscribers.Digest) ?>
|
||||||
<li><?cs call:setting("4") ?></li>
|
|
||||||
<?cs elif:(Data.List.PartType == "deny") ?>
|
<?cs elif:(Data.List.PartType == "deny") ?>
|
||||||
<li><?cs call:checkbox("k") ?></li>
|
<?cs call:show_options(UI.Options.Subscribers.Deny) ?>
|
||||||
<?cs elif:(Data.List.PartType == "mod") ?>
|
<?cs elif:(Data.List.PartType == "mod") ?>
|
||||||
<li><?cs call:checkbox("m") ?>
|
<?cs call:show_options(UI.Options.Subscribers.Moderators) ?>
|
||||||
<?cs if:Data.List.Options.m ?>
|
|
||||||
<ul><li><?cs call:setting("7") ?></li></ul><?cs /if ?>
|
|
||||||
</li>
|
|
||||||
<li><?cs call:checkbox("s") ?>
|
|
||||||
<?cs if:Data.List.Options.s ?>
|
|
||||||
<ul><li><?cs call:setting("8") ?></li></ul><?cs /if ?>
|
|
||||||
</li>
|
|
||||||
<li><?cs call:checkbox("r") ?>
|
|
||||||
<?cs if:Data.List.Options.r ?>
|
|
||||||
<ul><li><?cs call:setting("9") ?>
|
|
||||||
<?cs var:Lang.Misc.ModSubOverridesRemote ?></li></ul><?cs /if ?>
|
|
||||||
</li>
|
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
|
|
||||||
<li><!-- include default form values -->
|
<!-- include default form values -->
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
||||||
<input type="hidden" name="config_subset" value="RESERVED-subscribers" />
|
<input type="hidden" name="config_subset" value="RESERVED-subscribers" />
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||||
<input type="hidden" name="action" value="config_do" />
|
<input type="hidden" name="action" value="config_do" />
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||||
</ul>
|
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
|
@ -89,7 +79,7 @@
|
||||||
|
|
||||||
<table class="subscribers"><tr>
|
<table class="subscribers"><tr>
|
||||||
<?cs if:subcount(Data.List.Subscribers) > 0 ?>
|
<?cs if:subcount(Data.List.Subscribers) > 0 ?>
|
||||||
<td><form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<td><form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||||
<?cs if:Data.List.PartType ?>
|
<?cs if:Data.List.PartType ?>
|
||||||
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
|
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
|
||||||
|
@ -115,7 +105,7 @@
|
||||||
</ul></form></td>
|
</ul></form></td>
|
||||||
<?cs /if ?>
|
<?cs /if ?>
|
||||||
|
|
||||||
<td><form method="post" action="<?cs var:ScriptName ?>" enctype="multipart/form-data">
|
<td><form method="post" action="<?cs call:link("","","","","","") ?>" enctype="multipart/form-data">
|
||||||
<!-- this form has to be "multipart/form-data" to make file upload work -->
|
<!-- this form has to be "multipart/form-data" to make file upload work -->
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||||
<?cs if:Data.List.PartType ?>
|
<?cs if:Data.List.PartType ?>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<?cs var:html_escape(Lang.Introduction.ResetTextFile) ?>
|
<?cs var:html_escape(Lang.Introduction.ResetTextFile) ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>">
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>">
|
||||||
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
|
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
|
||||||
<input type="hidden" name="action" value="textfile_reset" />
|
<input type="hidden" name="action" value="textfile_reset" />
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.TextFileEdit) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.TextFileEdit) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>">
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>">
|
||||||
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
|
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.TextFiles) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.TextFiles) ?> </legend>
|
||||||
|
|
||||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
189
template/ui/default/normal.hdf
Normal file
189
template/ui/default/normal.hdf
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
UI {
|
||||||
|
|
||||||
|
Navigation {
|
||||||
|
ListSelect = 1
|
||||||
|
ListCreate = 1
|
||||||
|
Subscribers {
|
||||||
|
Subscribers = 1
|
||||||
|
Digest = 1
|
||||||
|
Allow = 1
|
||||||
|
Deny = 1
|
||||||
|
Moderators = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Config {
|
||||||
|
Main = 1
|
||||||
|
Subscription = 1
|
||||||
|
Posting = 1
|
||||||
|
Processing = 1
|
||||||
|
Archive = 1
|
||||||
|
Admin = 1
|
||||||
|
All = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
TextEdit = 1
|
||||||
|
ListDelete = 1
|
||||||
|
|
||||||
|
Help = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Options {
|
||||||
|
|
||||||
|
Create {
|
||||||
|
Listname = create_listname
|
||||||
|
Listaddress = create_listaddress
|
||||||
|
Listlanguage = lang_select
|
||||||
|
Mysql = mysql
|
||||||
|
Webuser = webusers
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Subscribers {
|
||||||
|
Subscribers = {}
|
||||||
|
Digest {
|
||||||
|
Enabled = digest_enabled
|
||||||
|
Settings = digest_settings
|
||||||
|
}
|
||||||
|
|
||||||
|
Deny {
|
||||||
|
Enabled = block_deny
|
||||||
|
}
|
||||||
|
|
||||||
|
Moderators {
|
||||||
|
Posting {
|
||||||
|
Self = mod_post
|
||||||
|
Path = mod_post_path
|
||||||
|
}
|
||||||
|
Subscription {
|
||||||
|
Self = mod_sub
|
||||||
|
Path = mod_sub_path
|
||||||
|
}
|
||||||
|
Administration {
|
||||||
|
Self = admin_enabled
|
||||||
|
Path = admin_path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Config {
|
||||||
|
Main {
|
||||||
|
Language = lang_select
|
||||||
|
Charset = charset_select
|
||||||
|
Owner = owner_address
|
||||||
|
MainList = mainlist
|
||||||
|
MailmanRequests = mailman_requests
|
||||||
|
RemoveWarn = warn_remove
|
||||||
|
SQL = mysql
|
||||||
|
WebUsers = webusers
|
||||||
|
}
|
||||||
|
|
||||||
|
Archive {
|
||||||
|
Enabled {
|
||||||
|
Self = archive_enabled
|
||||||
|
Public = public
|
||||||
|
ModOnly = archive_mod_only
|
||||||
|
Guard = archive_deny_unknown
|
||||||
|
}
|
||||||
|
RemovePrivateHeader = archive_remove_private_header
|
||||||
|
}
|
||||||
|
|
||||||
|
Subscription {
|
||||||
|
Public = public
|
||||||
|
ConfirmSub = confirm_sub
|
||||||
|
ConfirmUnsub = confirm_unsub
|
||||||
|
ModSub {
|
||||||
|
Self = mod_sub
|
||||||
|
Path = mod_sub_path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Admin {
|
||||||
|
Enabled {
|
||||||
|
Self = admin_enabled
|
||||||
|
RequestSubscribers = admin_get_subscribers
|
||||||
|
EditText = admin_edit_text
|
||||||
|
Path = admin_path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Posting {
|
||||||
|
UseDeny = block_deny
|
||||||
|
BlockOthers = block_others_post
|
||||||
|
Confirm = confirm_post
|
||||||
|
Moderate {
|
||||||
|
Self = mod_post
|
||||||
|
NonMod = block_nonmod_post
|
||||||
|
Path = mod_post_path
|
||||||
|
}
|
||||||
|
SizeMax = msgsize_max
|
||||||
|
SizeMin = msgsize_min
|
||||||
|
MimeCheck {
|
||||||
|
Self = mimecheck
|
||||||
|
MimeReject = mimereject
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Processing {
|
||||||
|
Prefix = prefix
|
||||||
|
Trailer = trailer
|
||||||
|
From = from_address
|
||||||
|
MimeCheck {
|
||||||
|
Self = mimecheck
|
||||||
|
MimeRemove = mimeremove
|
||||||
|
}
|
||||||
|
HeaderRemove = headerremove
|
||||||
|
HeaderAdd = headeradd
|
||||||
|
}
|
||||||
|
|
||||||
|
Overview {
|
||||||
|
Public = public
|
||||||
|
ConfirmSub = confirm_sub
|
||||||
|
ConfirmUnsub = confirm_unsub
|
||||||
|
ModSubEnable = mod_sub
|
||||||
|
UseDeny = block_deny
|
||||||
|
BlockOthers = block_others_post
|
||||||
|
ConfirmPosting = confirm_post
|
||||||
|
ModPosting = mod_post
|
||||||
|
NonModPosting = block_nonmod_post
|
||||||
|
MailmanRequests = mailman_requests
|
||||||
|
RemoveWarn = warn_remove
|
||||||
|
DigestEnabled = digest_enabled
|
||||||
|
DigestSettings = digest_settings
|
||||||
|
ArchiveEnabled = archive_enabled
|
||||||
|
ArchiveModOnly = archive_mod_only
|
||||||
|
ArchiveGuard = archive_deny_unknown
|
||||||
|
RemovePrivateHeader = archive_remove_private_header
|
||||||
|
AdminEnabled = admin_enabled
|
||||||
|
AdminRequestSubscribers = admin_get_subscribers
|
||||||
|
AdminEditText = admin_edit_text
|
||||||
|
FromAddress = from_address
|
||||||
|
Owner = owner_address
|
||||||
|
SQL = mysql
|
||||||
|
MainList = mainlist
|
||||||
|
ModPostPath = mod_post_path
|
||||||
|
ModSubPath = mod_sub_path
|
||||||
|
AdminPath = admin_path
|
||||||
|
Prefix = prefix
|
||||||
|
Trailer = trailer
|
||||||
|
SizeMax = msgsize_max
|
||||||
|
SizeMin = msgsize_min
|
||||||
|
MimeCheck {
|
||||||
|
Self = mimecheck
|
||||||
|
MimeRemove = mimeremove
|
||||||
|
MimeReject = mimereject
|
||||||
|
}
|
||||||
|
HeaderRemove = headerremove
|
||||||
|
HeaderAdd = headeradd
|
||||||
|
Language = lang_select
|
||||||
|
Charset = charset_select
|
||||||
|
WebUsers = webusers
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue