branch "ui_templates" moved to new trunk
This commit is contained in:
parent
7930994498
commit
33e299a402
72 changed files with 735 additions and 610 deletions
2
INSTALL
2
INSTALL
|
@ -7,7 +7,7 @@ OVERVIEW:
|
|||
3 - configuration file
|
||||
4 - compile cgi wrapper
|
||||
5 - install cgi wrapper
|
||||
6 - (optional) configure access control (http authentication)
|
||||
6 - [optional] configure access control (http authentication)
|
||||
7 - css stylesheet file
|
||||
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
|
||||
read INSTALL.
|
||||
|
@ -21,7 +21,7 @@ VIII. Bugs && Bug Reports
|
|||
|
||||
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.
|
||||
|
||||
|
@ -107,6 +107,7 @@ This version of ezmlm-web requires the following;
|
|||
+ Getopt::Std v4.1
|
||||
+ File::Find v?
|
||||
+ File::Copy v2.02
|
||||
+ File::Path v1.07
|
||||
+ Text::ParseWords v3.24
|
||||
|
||||
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.
|
||||
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>
|
||||
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
|
||||
(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
|
||||
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
|
||||
|
@ -236,7 +239,7 @@ VII. Language Portablity
|
|||
=========================
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
check relevance of "t", "f" and "x" flag for idx5
|
||||
|
||||
"cancel" button during text editing (simple "reset" input button)
|
||||
|
||||
restore user input after failed list_create (especially options)
|
||||
|
@ -10,8 +8,7 @@ support for:
|
|||
* show subscription log
|
||||
* 'mailinglist' (maybe)
|
||||
* config directory (maybe)
|
||||
|
||||
allow dynamic addition of user-made config templates (seperate directory, ...)
|
||||
* gpg-ezmlm (defenitely)
|
||||
|
||||
interface language switch support
|
||||
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
|
||||
|
||||
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
|
||||
* fully compatible with ezmlm-idx v5.0
|
||||
* change language of list (idx >= 5.0)
|
||||
|
|
|
@ -106,11 +106,11 @@ font.feature {
|
|||
}
|
||||
|
||||
#main_content fieldset.form form ul {
|
||||
padding-left: 1%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#main_content fieldset.form form ul li ul {
|
||||
padding-left: 3%;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
#main_content table.list_select {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Package: ezmlm-web
|
||||
Version: 3.1-3
|
||||
Version: 3.1.1-1
|
||||
Section: admin
|
||||
Priority: extra
|
||||
Architecture: all
|
||||
|
@ -16,5 +16,6 @@ Description: Web interface for ezmlm-idx mailing list administration
|
|||
* qmail - http://cr.yp.to/qmail.html
|
||||
* ezmlm-idx - http://ezmlm.org/
|
||||
* 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
|
||||
#===========================================================================
|
||||
# ezmlm-web.cgi - version 3.1
|
||||
# ezmlm-web.cgi - version 3.1.1
|
||||
# ==========================================================================
|
||||
# All user configuration happens in the config file ``ezmlmwebrc''
|
||||
# POD documentation is at the end of this file
|
||||
|
@ -15,6 +15,7 @@ use ClearSilver;
|
|||
use Mail::Ezmlm;
|
||||
use Mail::Address;
|
||||
use File::Copy;
|
||||
use File::Path;
|
||||
use DB_File;
|
||||
use CGI;
|
||||
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[$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[$HTML_CSS_FILE $TEMPLATE_DIR $LANGUAGE_DIR $HTML_LANGUAGE];
|
||||
|
||||
|
@ -75,11 +76,15 @@ if(defined($opt_d)) {
|
|||
$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)) {
|
||||
$WEBUSERS_FILE = $LIST_DIR . '/webusers'
|
||||
}
|
||||
|
||||
# check for non-default dotqmail directory
|
||||
$DOTQMAIL_DIR = $HOME_DIR unless defined($DOTQMAIL_DIR);
|
||||
|
||||
# check optional stylesheet
|
||||
$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') {
|
||||
# User really wants to delete a list ...
|
||||
warn "do it";
|
||||
if (defined($q->param('list'))) {
|
||||
$success = 'DeleteList' if (&delete_list());
|
||||
} else {
|
||||
|
@ -292,6 +296,14 @@ sub load_hdf {
|
|||
$hdf->setValue("TemplateDir", "$TEMPLATE_DIR/");
|
||||
&fatal_error("Language data dir ($LANGUAGE_DIR) not found!") unless (-e $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("Stylesheet", "$HTML_CSS_FILE");
|
||||
$hdf->setValue("Config.PageTitle", "$HTML_TITLE");
|
||||
|
@ -322,7 +334,12 @@ sub output_page {
|
|||
|
||||
$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++) {
|
||||
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 (?:'(.+?)')/);
|
||||
unless ($state) {
|
||||
# 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 {
|
||||
# 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);
|
||||
$list = new Mail::Ezmlm("$LIST_DIR/" . $q->param('list'));
|
||||
if ($listadd = $list->getpart('outlocal')) {
|
||||
|
@ -641,41 +700,46 @@ sub delete_list {
|
|||
|
||||
$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)) {
|
||||
$warning = 'SafeRemoveRenameDirFailed';
|
||||
return (1==0);
|
||||
}
|
||||
|
||||
unless (opendir(DIR, "$HOME_DIR")) {
|
||||
$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;
|
||||
# remove dotqmail files
|
||||
foreach (@files) {
|
||||
unless (move($_, "$SAFE_DIR")) {
|
||||
$warning = 'SafeRemoveMoveDotQmailFailed';
|
||||
return (1==0);
|
||||
}
|
||||
}
|
||||
|
||||
warn "List '$oldfile' moved (deleted)";
|
||||
} else {
|
||||
# This, however, does DELETE the list. I don't like the idea, but I was
|
||||
# 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';
|
||||
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) {
|
||||
$warning = 'UnsafeRemoveDotQmailFailed';
|
||||
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=>'');
|
||||
}
|
||||
|
@ -748,8 +812,9 @@ sub add_address {
|
|||
# Sanity check
|
||||
my $fileinfo = $q->uploadInfo($q->param('mailaddressfile'));
|
||||
my $filetype = $fileinfo->{'Content-Type'};
|
||||
unless($filetype =~ m{^text/}) {
|
||||
unless($filetype =~ m{^text/}i) {
|
||||
$warning = 'InvalidFileFormat';
|
||||
warn "[ezmlm-web] mime type of uploaded file rejected: $filetype";
|
||||
return (1==0);
|
||||
}
|
||||
|
||||
|
@ -882,7 +947,7 @@ sub create_list {
|
|||
# Some taint checking ...
|
||||
$qmail = $1 if $q->param('inlocal') =~ /(?:$USER-)?([^\<\>\\\/\s]+)$/;
|
||||
$listname = $q->param('list');
|
||||
if ($listname =~ m/[^\w\.-]/) {
|
||||
if ($listname =~ m/[^\w\._\-]/) {
|
||||
$warning = 'InvalidListName';
|
||||
return (1==0);
|
||||
}
|
||||
|
@ -904,7 +969,7 @@ sub create_list {
|
|||
$warning = 'ListNameAlreadyExists';
|
||||
return (1==0);
|
||||
}
|
||||
if (-e "$HOME_DIR/.qmail-$qmail") {
|
||||
if (-e "$DOTQMAIL_DIR/.qmail-$qmail") {
|
||||
$warning = 'ListAddressAlreadyExists';
|
||||
return (1==0);
|
||||
}
|
||||
|
@ -914,7 +979,7 @@ sub create_list {
|
|||
my($list) = new Mail::Ezmlm;
|
||||
|
||||
unless ($list->make(-dir=>"$LIST_DIR/$listname",
|
||||
-qmail=>"$HOME_DIR/.qmail-$qmail",
|
||||
-qmail=>"$DOTQMAIL_DIR/.qmail-$qmail",
|
||||
-name=>$q->param('inlocal'),
|
||||
-host=>$q->param('inhost'),
|
||||
-switches=>$options,
|
||||
|
@ -950,14 +1015,20 @@ sub extract_options_from_params()
|
|||
{
|
||||
# Work out the command line options ...
|
||||
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
|
||||
# as ezmlm-make removes any undefined value
|
||||
|
||||
$listname = $q->param('list');
|
||||
$list = new Mail::Ezmlm("$LIST_DIR/$listname");
|
||||
$old_options = $list->getconfig();
|
||||
if (-e "$LIST_DIR/$listname") {
|
||||
# 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 ################
|
||||
$i = 0;
|
||||
|
@ -1140,7 +1211,7 @@ sub update_webusers {
|
|||
my $listname = $q->param('list');
|
||||
my $webusers_filtered = $q->param('webusers');
|
||||
# remove any insecure characters (e.g. a line break :))
|
||||
$webusers_filtered =~ s/[^\w_,-]/ /gs;
|
||||
$webusers_filtered =~ s/[^\w,_\.\-]/ /gs;
|
||||
open(TMP, "<$temp_file");
|
||||
unless (open(WU, ">$WEBUSERS_FILE")) {
|
||||
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() {
|
||||
my $text = shift;
|
||||
|
||||
|
|
|
@ -12,6 +12,12 @@
|
|||
# This directory will automatically be created if needed.
|
||||
$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
|
||||
# defaults to "$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 <unistd.h>
|
||||
|
||||
/* C wrapper to allow ezmlm-web.cgi to run suid */
|
||||
/* Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved */
|
||||
|
@ -8,18 +9,26 @@
|
|||
|
||||
int main(void) {
|
||||
/* 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
|
||||
list below works */
|
||||
/* Look at the exec(3) man page if you don't understand how the arguments
|
||||
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
|
||||
HelpIconURL
|
||||
Config.Title
|
||||
Config.UI.LinkAttrs.web_lang
|
||||
Config.UI.LinkAttrs.template
|
||||
|
||||
Data.Action
|
||||
Data.areDefaultTextsAvailable
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
1) update version number
|
||||
* changelog
|
||||
* README
|
||||
* ezmlm-web.cgi
|
||||
* UPGRADING
|
||||
* template/footer.cs
|
||||
* debian-related/changelog.Debian
|
||||
* debian-related/DEBIAN/control
|
||||
|
||||
2) update changelog
|
||||
2) create new tag
|
||||
|
||||
3) create tar.gz
|
||||
./make-tar.sh X.Y.Z
|
||||
|
@ -17,3 +20,4 @@
|
|||
scp XYZ.deb uml-bastelecke@systemausfall.org:/data/deb-repo/incoming/unstable
|
||||
|
||||
6) update website
|
||||
|
||||
|
|
|
@ -9,30 +9,16 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
<?cs call:show_options(UI.Options.Config.Admin) ?>
|
||||
|
||||
<!-- enable remote administration -->
|
||||
<li><?cs call:checkbox("r") ?>
|
||||
<ul>
|
||||
<!-- administrators may request subscribers list -->
|
||||
<li><?cs call:checkbox("l") ?></li>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- administrators may edit text files via mail -->
|
||||
<li><?cs call:checkbox("n") ?></li>
|
||||
|
||||
<!-- 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>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
</form>
|
||||
</fieldset>
|
||||
|
|
|
@ -9,176 +9,16 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
<?cs call:show_options(UI.Options.Config.Overview) ?>
|
||||
|
||||
<!-- public subsccription and archive -->
|
||||
<li><?cs call:checkbox("p") ?></li>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- do not require confirmation for subscription -->
|
||||
<li><?cs call:checkbox("h") ?></li>
|
||||
|
||||
<!-- 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>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
</form>
|
||||
</fieldset>
|
||||
|
|
|
@ -9,33 +9,16 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
|
||||
<!-- 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>
|
||||
<?cs call:show_options(UI.Options.Config.Archive) ?>
|
||||
|
||||
<!-- block unknown users from archive -->
|
||||
<li><?cs call:checkbox("g") ?></li>
|
||||
</ul></li>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- remove 'no-archive' header -->
|
||||
<li><?cs call:checkbox("i") ?></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>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
</form>
|
||||
</fieldset>
|
||||
|
|
|
@ -9,60 +9,16 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
<?cs call:show_options(UI.Options.Config.Main) ?>
|
||||
|
||||
<!-- list 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 ?>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- 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 ?>
|
||||
|
||||
<!-- 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>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
</form>
|
||||
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- administrators may edit text files via mail -->
|
||||
<?cs call:checkbox("n") ?>
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- enable remote administration -->
|
||||
<?cs call:checkbox("r") ?>
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- administrators may request subscribers list -->
|
||||
<?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 -->
|
||||
<?cs call:checkbox("i") ?>
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- use deny list -->
|
||||
<?cs call:checkbox("k") ?>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- only moderators may post -->
|
||||
<?cs call:checkbox("o") ?>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- block unknown users from archive -->
|
||||
<?cs call:checkbox("g") ?>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- only subscribers may post -->
|
||||
<?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 -->
|
||||
<?cs call:checkbox("y") ?>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- do not require confirmation for subscription -->
|
||||
<?cs call:checkbox("h") ?>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- do not require confirmation for unsubscribe -->
|
||||
<?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 -->
|
||||
<?cs call:setting("3") ?>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- headeradd -->
|
||||
<?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
|
||||
<ul><li><textarea name="headeradd" rows="5" cols="70"><?cs
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- headerremove -->
|
||||
<?cs var:html_escape(Lang.Misc.HeaderRemove) ?>:<br/>
|
||||
<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 -->
|
||||
<?cs call:setting("0") ?>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- mimeremove and mimereject -->
|
||||
<?cs call:checkbox("x") ?>
|
||||
<?cs if:(Data.List.Options.x == 1) ?><ul>
|
||||
|
@ -6,4 +7,3 @@
|
|||
<?cs call:display_option('mimereject') ?>
|
||||
<?cs call:display_option('mimeremove') ?>
|
||||
</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
|
||||
removed during the next config_update -->
|
||||
<?cs var:html_escape(Lang.Misc.MimeReject) ?>:<br/>
|
||||
<textarea name="mimereject" rows="4" cols="70"><?cs
|
||||
var:html_escape(Data.List.MimeReject) ?></textarea>
|
||||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<?cs if:Data.List.Options.x == 1 ?>
|
||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
||||
removed during the next config_update -->
|
||||
<?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
|
||||
removed during the next config_update -->
|
||||
<?cs var:html_escape(Lang.Misc.MimeRemove) ?>:<br/>
|
||||
<textarea name="mimeremove" rows="4" cols="70"><?cs
|
||||
var:html_escape(Data.List.MimeRemove) ?></textarea>
|
||||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<?cs if:Data.List.Options.x == 1 ?>
|
||||
<!-- turn off mimermove, if "-x" is not activated, as it will be
|
||||
removed during the next config_update -->
|
||||
<?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 -->
|
||||
<?cs call:checkbox("m") ?>
|
||||
|
|
|
@ -1,2 +1,5 @@
|
|||
<!-- messsage moderator path -->
|
||||
<?cs call:setting("7") ?>
|
||||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<?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 -->
|
||||
<?cs call:checkbox("s") ?>
|
||||
|
|
|
@ -1,2 +1,5 @@
|
|||
<!-- custom path to subscription moderators -->
|
||||
<?cs call:setting("8") ?>
|
||||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<?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 -->
|
||||
<input type="checkbox" name="msgsize_max_state"
|
||||
value="selected" id="msgsize_max_state" <?cs
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- message size limit -->
|
||||
<input type="checkbox" name="msgsize_min_state"
|
||||
value="selected" id="msgsize_min_state" <?cs
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
<!-- mysql database -->
|
||||
<?cs call:setting("6") ?>
|
||||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<?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 -->
|
||||
<?cs call:setting("5") ?>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- subject prefix -->
|
||||
<?cs call:checkbox("f") ?>
|
||||
<ul><li><input type="text" name="prefix" value="<?cs
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- public subsccription and archive -->
|
||||
<?cs call:checkbox("p") ?>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
|
||||
<!-- trailing text -->
|
||||
<?cs call:checkbox("t") ?>
|
||||
<?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 -->
|
||||
<ul><li><textarea name="trailing_text" rows="3" cols="72"><?cs
|
||||
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 -->
|
||||
<?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/>
|
||||
name="webusers" value="<?cs if:Data.List.WebUsers
|
||||
?>var:html_escape(Data.List.WebUsers) ?><?cs
|
||||
else ?><?cs
|
||||
var:html_escape(Data.WebUser.UserName)
|
||||
?><?cs /if ?>" size="40" /><br/>
|
||||
</li></ul>
|
||||
|
||||
|
|
|
@ -9,64 +9,16 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
<?cs call:show_options(UI.Options.Config.Posting) ?>
|
||||
|
||||
<!-- use deny list -->
|
||||
<li><?cs call:checkbox("k") ?></li>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- 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") ?>
|
||||
<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>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
</form>
|
||||
|
||||
|
|
|
@ -9,56 +9,17 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
<?cs call:show_options(UI.Options.Config.Processing) ?>
|
||||
|
||||
<!-- 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>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- trailing text -->
|
||||
<li><?cs call:checkbox("t") ?>
|
||||
<?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 ?>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
<!-- 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>
|
||||
</fieldset>
|
||||
|
||||
|
|
|
@ -9,33 +9,16 @@
|
|||
<fieldset class="form">
|
||||
<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" />
|
||||
|
||||
<ul>
|
||||
<?cs call:show_options(UI.Options.Config.Subscription) ?>
|
||||
|
||||
<!-- public subsccription and archive -->
|
||||
<li><?cs call:checkbox("p") ?></li>
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<!-- do not require confirmation for subscription -->
|
||||
<li><?cs call:checkbox("h") ?></li>
|
||||
|
||||
<!-- 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>
|
||||
<input type="hidden" name="action" value="config_do" />
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
|
||||
</form>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
<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 />
|
||||
</div>
|
||||
|
||||
|
|
|
@ -5,40 +5,9 @@
|
|||
<fieldset class="form">
|
||||
<legend><?cs var:html_escape(Lang.Legend.ListCreate) ?> </legend>
|
||||
|
||||
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
|
||||
<ul>
|
||||
<li><label for="listname"><?cs var:html_escape(Lang.Misc.ListName) ?>:</label>
|
||||
<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>
|
||||
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||
|
||||
<?cs call:show_options(UI.Options.Create) ?>
|
||||
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<legend><?cs var:html_escape(Lang.Legend.ListDelete) ?> </legend>
|
||||
|
||||
<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="action" value="list_delete_do" />
|
||||
|
|
|
@ -24,7 +24,9 @@
|
|||
<?cs loop: y = #0, columns-1, #1 ?>
|
||||
<td>
|
||||
<?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 ?>
|
||||
</td>
|
||||
<?cs /loop ?>
|
||||
|
|
|
@ -1,57 +1,97 @@
|
|||
<?cs def:checkbox(option)
|
||||
?><?cs if:Lang.Options[option]
|
||||
?><input type="checkbox" name="option_<?cs var:option ?>"
|
||||
id="option_<?cs var:option ?>" value="selected" <?cs
|
||||
if:(Data.List.Options[option] == 1) ?>checked="checked"<?cs /if ?> />
|
||||
<label for="option_<?cs var:option ?>"><?cs var:html_escape(Lang.Options[option])
|
||||
?><input type="checkbox" name="option_<?cs var:option ?>" id="option_<?cs
|
||||
var:option ?>" value="selected" <?cs
|
||||
if:(Data.List.Options[option] == 1) ?>checked="checked"<?cs
|
||||
/if ?> /> <label for="option_<?cs var:option ?>"><?cs
|
||||
var:html_escape(Lang.Options[option])
|
||||
?></label><?cs
|
||||
set:available_options = available_options + option ?><?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]
|
||||
?><input type="checkbox" name="setting_state_<?cs var:setting
|
||||
?>" id="setting_state_<?cs var:setting ?>" value="selected" <?cs
|
||||
if:(Data.List.Settings[setting].state == 1) ?>checked="checked"<?cs /if ?> />
|
||||
<label for="setting_state_<?cs var:setting ?>"><?cs
|
||||
var:html_escape(Lang.Settings[setting]) ?></label>
|
||||
<ul><li><input type="text" name="setting_value_<?cs var:setting
|
||||
if:(Data.List.Settings[setting].state == 1) ?>checked="checked"<?cs /if
|
||||
?> /> <label for="setting_state_<?cs var:setting ?>"><?cs
|
||||
var:html_escape(Lang.Settings[setting])
|
||||
?></label><ul><li><input type="text" name="setting_value_<?cs var:setting
|
||||
?>" id="setting_value_<?cs var:setting ?>" value="<?cs
|
||||
var:html_escape(Data.List.Settings[setting].value) ?>" size="30" /></li></ul><?cs
|
||||
set:available_settings = available_settings + setting ?><?cs
|
||||
else ?>unknown setting (<?cs var:setting ?>)<?cs /if ?><?cs
|
||||
/def ?>
|
||||
/def ?><?cs
|
||||
|
||||
<?cs def:warning(warntext)
|
||||
?><div class="warning">
|
||||
<?cs alt:warntext ?>unknown warning message (<?cs
|
||||
var:Data.Warning ?>)<?cs /alt ?>
|
||||
</div><?cs
|
||||
/def ?>
|
||||
def:warning(warntext)
|
||||
?><div class="warning"><?cs alt:warntext ?>unknown warning message (<?cs
|
||||
var:Data.Warning ?>)<?cs /alt ?></div><?cs
|
||||
/def ?><?cs
|
||||
|
||||
<?cs def:error(errtext)
|
||||
def:error(errtext)
|
||||
?><div class="error">
|
||||
<?cs alt:errtext ?>unknown error message (<?cs
|
||||
var:Data.Error ?>)<?cs /alt ?>
|
||||
</div><?cs
|
||||
/def ?>
|
||||
var:Data.Error ?>)<?cs /alt ?></div><?cs
|
||||
/def ?><?cs
|
||||
|
||||
<?cs def:success(succtext)
|
||||
def:success(succtext)
|
||||
?><div class="success">
|
||||
<?cs alt:succtext ?>unknown success message (<?cs
|
||||
var:Data.Success ?>)<?cs /alt ?>
|
||||
</div><?cs
|
||||
/def ?>
|
||||
var:Data.Success ?>)<?cs /alt ?></div><?cs
|
||||
/def ?><?cs
|
||||
|
||||
<?cs def:limit_string_len(text,limit)
|
||||
def:limit_string_len(text,limit)
|
||||
?><?cs set:text2 = text ?><?cs set:len = string.length(text2) ?><?cs
|
||||
if:len > limit ?><?cs
|
||||
var:string.slice(text,0,limit / #2 + limit % #2 - 1) ?>...<?cs
|
||||
var:string.slice(text,len - limit / #2 + #3 - #1, len) ?><?cs
|
||||
else ?><?cs var:text ?><?cs /if ?><?cs
|
||||
/def ?>
|
||||
/def ?><?cs
|
||||
|
||||
<?cs def:display_option(optname)
|
||||
?><?cs linclude:TemplateDir + "/config_options/" + optname + ".cs" ?><?cs
|
||||
def:show_options(element)
|
||||
?><?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 ?>
|
||||
|
|
134
template/nav.cs
134
template/nav.cs
|
@ -2,15 +2,15 @@
|
|||
|
||||
<div id="nav_bar">
|
||||
<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 ?>
|
||||
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>
|
||||
</li>
|
||||
<?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 ?>
|
||||
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>
|
||||
</li>
|
||||
<?cs /if ?>
|
||||
|
@ -18,53 +18,119 @@
|
|||
|
||||
<?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><a <?cs if:((Data.Action == "subscribers") && ((Data.List.PartType == "") || !Data.List.PartType)) ?>class="nav_active"<?cs /if ?>
|
||||
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>
|
||||
<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>
|
||||
<?cs if:UI.Navigation.Subscribers.Subscribers == 1
|
||||
?><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>
|
||||
<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 ?>
|
||||
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>
|
||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
||||
href="<?cs call:link("list",Data.List.Name,"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 ?>
|
||||
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>
|
||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
||||
href="<?cs call:link("list",Data.List.Name,"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 ?>
|
||||
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>
|
||||
<li><a <?cs if:((Data.Action == "subscribers") &&
|
||||
href="<?cs call:link("list",Data.List.Name,"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 ?>
|
||||
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>
|
||||
</li>
|
||||
|
||||
<li><a <?cs if:(Data.Action == "config_main") ?> class="nav_active"<?cs /if ?>
|
||||
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>
|
||||
<li><?cs if:UI.Navigation.Config.Main == 1
|
||||
?><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>
|
||||
<li><a <?cs if:(Data.Action == "config_subscription") ?> class="nav_active"<?cs /if ?>
|
||||
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_posting") ?> 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>
|
||||
<li><a <?cs if:(Data.Action == "config_processing") ?> class="nav_active"<?cs /if ?>
|
||||
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>
|
||||
<li><a <?cs if:(Data.Action == "config_archive") ?> class="nav_active"<?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>
|
||||
<li><a <?cs if:(Data.Action == "config_admin") ?> class="nav_active"<?cs /if ?>
|
||||
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>
|
||||
<li><a <?cs if:(Data.Action == "config_all") ?> class="nav_active"<?cs /if ?>
|
||||
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>
|
||||
<?cs if:UI.Navigation.Config.Subscription == 1
|
||||
?><li><a <?cs if:(Data.Action == "config_subscription")
|
||||
?> class="nav_active"<?cs /if ?>
|
||||
href="<?cs call:link("list",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><?cs /if ?>
|
||||
<?cs if:UI.Navigation.Config.Posting == 1
|
||||
?><li><a <?cs if:(Data.Action == "config_posting")
|
||||
?> class="nav_active"<?cs /if ?>
|
||||
href="<?cs call:link("list",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><?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>
|
||||
|
||||
<li><a <?cs if:((Data.Action == "textfiles") || (Data.Action == "textfile_edit")) ?> class="nav_active"<?cs /if ?>
|
||||
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>
|
||||
<?cs if:UI.Navigation.TextEdit == 1
|
||||
?><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 ?>
|
||||
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>
|
||||
<?cs if:UI.Navigation.ListDelete == 1
|
||||
?><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>
|
||||
|
||||
<?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>
|
||||
|
||||
|
|
|
@ -26,45 +26,35 @@
|
|||
<?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">
|
||||
<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 ?>" />
|
||||
|
||||
<ul>
|
||||
<?cs if:(Data.List.PartType == "digest") ?>
|
||||
<li><?cs call:checkbox("d") ?></li>
|
||||
<li><?cs call:setting("4") ?></li>
|
||||
<?cs call:show_options(UI.Options.Subscribers.Digest) ?>
|
||||
<?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") ?>
|
||||
<li><?cs call:checkbox("m") ?>
|
||||
<?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 call:show_options(UI.Options.Subscribers.Moderators) ?>
|
||||
<?cs /if ?>
|
||||
|
||||
<li><!-- include default form values -->
|
||||
<!-- include default form values -->
|
||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||
|
||||
<input type="hidden" name="config_subset" value="RESERVED-subscribers" />
|
||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||
<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>
|
||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button>
|
||||
</form>
|
||||
</fieldset>
|
||||
<?cs /if ?>
|
||||
|
@ -89,7 +79,7 @@
|
|||
|
||||
<table class="subscribers"><tr>
|
||||
<?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 ?>" />
|
||||
<?cs if:Data.List.PartType ?>
|
||||
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
|
||||
|
@ -115,7 +105,7 @@
|
|||
</ul></form></td>
|
||||
<?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 -->
|
||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||
<?cs if:Data.List.PartType ?>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<?cs var:html_escape(Lang.Introduction.ResetTextFile) ?>
|
||||
</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="file" value="<?cs var:Data.List.File.Name ?>">
|
||||
<input type="hidden" name="action" value="textfile_reset" />
|
||||
|
@ -29,7 +29,7 @@
|
|||
<fieldset class="form">
|
||||
<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="file" value="<?cs var:Data.List.File.Name ?>">
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<fieldset class="form">
|
||||
<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 ?>" />
|
||||
|
||||
<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…
Add table
Reference in a new issue