oyama's patch
This commit is contained in:
parent
bc362f7915
commit
24dbc452b9
4 changed files with 254 additions and 25 deletions
|
@ -95,3 +95,10 @@ Version 2.3 - 10/06/02005
|
||||||
* file upload typo fixed
|
* file upload typo fixed
|
||||||
* update of webusers file fixed
|
* update of webusers file fixed
|
||||||
* moderator unsubscribe fixed
|
* moderator unsubscribe fixed
|
||||||
|
|
||||||
|
Version 2.3.1 - 13/09/02005
|
||||||
|
* Japanese translarion of web interface and support text edit for multibye
|
||||||
|
* many web style improvement
|
||||||
|
* mimeremove and prefix option delete enable
|
||||||
|
* add $USER value For virtual USER
|
||||||
|
* another lot of bug fix
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
# ezmlm-web.cgi - version 2.3 - 10/06/02005
|
# ezmlm-web.cgi - version 2.3.1 - 13/09/02005
|
||||||
#
|
#
|
||||||
# Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved.
|
# Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved.
|
||||||
# Please send bug reports and comments to guy-ezmlm@rucus.ru.ac.za
|
# Please send bug reports and comments to guy-ezmlm@rucus.ru.ac.za
|
||||||
|
@ -45,12 +45,14 @@ use Mail::Address;
|
||||||
use DB_File;
|
use DB_File;
|
||||||
use CGI;
|
use CGI;
|
||||||
use CGI::Carp qw(fatalsToBrowser set_message);
|
use CGI::Carp qw(fatalsToBrowser set_message);
|
||||||
|
use Encode qw/ from_to /; # add by ooyama for char convert
|
||||||
|
|
||||||
# These two are actually included later and are put here so we remember them.
|
# These two are actually included later and are put here so we remember them.
|
||||||
#use File::Find if ($UNSAFE_RM == 1);
|
#use File::Find if ($UNSAFE_RM == 1);
|
||||||
#use File::Copy if ($UNSAFE_RM == 0);
|
#use File::Copy if ($UNSAFE_RM == 0);
|
||||||
|
|
||||||
my $q = new CGI;
|
my $q = new CGI;
|
||||||
|
$q->charset('utf8'); # add by ooyama for support UTF-8
|
||||||
$q->import_names('Q');
|
$q->import_names('Q');
|
||||||
use vars qw[$opt_c $opt_d $opt_C];
|
use vars qw[$opt_c $opt_d $opt_C];
|
||||||
getopts('cd:C:');
|
getopts('cd:C:');
|
||||||
|
@ -60,7 +62,7 @@ $ENV{'PATH'} = '/bin';
|
||||||
|
|
||||||
# We run suid so we can't use $ENV{'HOME'} and $ENV{'USER'} to determine the
|
# We run suid so we can't use $ENV{'HOME'} and $ENV{'USER'} to determine the
|
||||||
# user. :( Don't alter this line unless you are _sure_ you have to.
|
# user. :( Don't alter this line unless you are _sure_ you have to.
|
||||||
my @tmp = getpwuid($>); my $USER=$tmp[0];
|
my @tmp = getpwuid($>); use vars qw[$USER]; $USER=$tmp[0]; # add by ooyama for virtual user
|
||||||
|
|
||||||
# use strict is a good thing++
|
# use strict is a good thing++
|
||||||
|
|
||||||
|
@ -70,10 +72,12 @@ use vars qw[$QMAIL_BASE $EZMLM_CGI_RC $EZMLM_CGI_URL $HTML_BGCOLOR $PRETTY_NAMES
|
||||||
use vars qw[%HELPER $HELP_ICON_URL $HTML_HEADER $HTML_FOOTER $HTML_TEXT $HTML_LINK];
|
use vars qw[%HELPER $HELP_ICON_URL $HTML_HEADER $HTML_FOOTER $HTML_TEXT $HTML_LINK];
|
||||||
use vars qw[%BUTTON %LANGUAGE $HTML_VLINK $HTML_TITLE $FILE_UPLOAD $WEBUSERS_FILE];
|
use vars qw[%BUTTON %LANGUAGE $HTML_VLINK $HTML_TITLE $FILE_UPLOAD $WEBUSERS_FILE];
|
||||||
use vars qw[$HTML_CSS_FILE];
|
use vars qw[$HTML_CSS_FILE];
|
||||||
|
use vars qw[$TEXT_ENCODE]; $TEXT_ENCODE='us-ascii'; # by ooyama for multibyte convert support
|
||||||
|
|
||||||
# Get user configuration stuff
|
# Get user configuration stuff
|
||||||
if(defined($opt_C)) {
|
if(defined($opt_C)) {
|
||||||
require "$opt_C"; # Command Line
|
$opt_C =~ /^([-\w.\/]+)$/;
|
||||||
|
require "$1"; # Command Line For perl security check by ooyama
|
||||||
} elsif(-e "$HOME_DIR/.ezmlmwebrc") {
|
} elsif(-e "$HOME_DIR/.ezmlmwebrc") {
|
||||||
require "$HOME_DIR/.ezmlmwebrc"; # User
|
require "$HOME_DIR/.ezmlmwebrc"; # User
|
||||||
} elsif(-e "/etc/ezmlm/ezmlmwebrc") {
|
} elsif(-e "/etc/ezmlm/ezmlmwebrc") {
|
||||||
|
@ -99,12 +103,20 @@ my($DEFAULT_HOST);
|
||||||
open (GETHOST, "<$QMAIL_BASE/me") || open (GETHOST, "<$QMAIL_BASE/defaultdomain") || die "Unable to read $QMAIL_BASE/me: $!";
|
open (GETHOST, "<$QMAIL_BASE/me") || open (GETHOST, "<$QMAIL_BASE/defaultdomain") || die "Unable to read $QMAIL_BASE/me: $!";
|
||||||
chomp($DEFAULT_HOST = <GETHOST>);
|
chomp($DEFAULT_HOST = <GETHOST>);
|
||||||
close GETHOST;
|
close GETHOST;
|
||||||
|
# add by ooyama DEFAULT_DOMAIN
|
||||||
|
my($DEFAULT_DOMAIN);
|
||||||
|
if(open (GETDOMAIN, "<$QMAIL_BASE/defaultdomain")){
|
||||||
|
chomp($DEFAULT_DOMAIN = <GETDOMAIN>);
|
||||||
|
close GETDOMAIN;
|
||||||
|
}else{
|
||||||
|
$DEFAULT_DOMAIN = $DEFAULT_HOST;
|
||||||
|
}
|
||||||
|
|
||||||
# Untaint form input ...
|
# Untaint form input ...
|
||||||
&untaint;
|
&untaint;
|
||||||
|
|
||||||
# redirect must come before headers are printed
|
# redirect must come before headers are printed
|
||||||
if(defined($Q::action) && $Q::action eq '[Web Archive]') {
|
if(defined($Q::action) && $Q::action eq "[$BUTTON{'webarchive'}]") { # bug fix
|
||||||
print $q->redirect(&ezmlmcgirc);
|
print $q->redirect(&ezmlmcgirc);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
@ -286,7 +298,7 @@ sub select_list {
|
||||||
print $q->startform;
|
print $q->startform;
|
||||||
print $q->hidden(-name=>'state', -default=>'select');
|
print $q->hidden(-name=>'state', -default=>'select');
|
||||||
|
|
||||||
print '<div class="list">';
|
print '<div style="margin-top : 5px;margin-left : 5px;margin-right : 40px;margin-bottom : 50px;" class="list">'; # By ooayam For better style
|
||||||
print $q->scrolling_list(-name=>'list', -size=>$scrollsize, -values=>\@lists) if defined(@lists);
|
print $q->scrolling_list(-name=>'list', -size=>$scrollsize, -values=>\@lists) if defined(@lists);
|
||||||
print '</div>'; # end of main_mainlinglists_list
|
print '</div>'; # end of main_mainlinglists_list
|
||||||
|
|
||||||
|
@ -352,7 +364,7 @@ sub display_list {
|
||||||
# Begin of content
|
# Begin of content
|
||||||
print '<div id="edit" class="container">';
|
print '<div id="edit" class="container">';
|
||||||
|
|
||||||
print '<div class="title">';
|
print '<div class="title" align="center">'; # by ooyama for style
|
||||||
print "<h2>$LANGUAGE{'subscribersto'} $Q::list</h2>";
|
print "<h2>$LANGUAGE{'subscribersto'} $Q::list</h2>";
|
||||||
print "<h3>($listaddress)</h3>";
|
print "<h3>($listaddress)</h3>";
|
||||||
print '<hr>';
|
print '<hr>';
|
||||||
|
@ -369,6 +381,7 @@ sub display_list {
|
||||||
print '<div class="add_remove">';
|
print '<div class="add_remove">';
|
||||||
print '<p>', ($#subscribers + 1), ' ', $LANGUAGE{'subscribers'}, '</p>' if defined(@subscribers);
|
print '<p>', ($#subscribers + 1), ' ', $LANGUAGE{'subscribers'}, '</p>' if defined(@subscribers);
|
||||||
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '</span>' if defined(@subscribers);
|
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '</span>' if defined(@subscribers);
|
||||||
|
print '<p>'; # by ooyama for style
|
||||||
print '<span class="formfield">', $q->textfield(-name=>'addsubscriber', -size=>'40'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddress'}, '"></span>';
|
print '<span class="formfield">', $q->textfield(-name=>'addsubscriber', -size=>'40'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddress'}, '"></span>';
|
||||||
print '<span class="formfield">', $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddressfile'}, '"></span>' if ($FILE_UPLOAD);
|
print '<span class="formfield">', $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddressfile'}, '"></span>' if ($FILE_UPLOAD);
|
||||||
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '</span>';
|
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '</span>';
|
||||||
|
@ -648,6 +661,7 @@ sub part_subscribers {
|
||||||
|
|
||||||
print '<div class="add_remove">';
|
print '<div class="add_remove">';
|
||||||
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '</span>' if defined(@subscribers);
|
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '</span>' if defined(@subscribers);
|
||||||
|
print '<p>';
|
||||||
print '<span class="formfield">', $q->textfield(-name=>'addsubscriber', -size=>'40'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddress'}, '"></span>';
|
print '<span class="formfield">', $q->textfield(-name=>'addsubscriber', -size=>'40'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddress'}, '"></span>';
|
||||||
print '<span class="formfield">', $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddressfile'}, '"></span>' if ($FILE_UPLOAD);
|
print '<span class="formfield">', $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'addaddressfile'}, '"></span>' if ($FILE_UPLOAD);
|
||||||
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '</span>';
|
print '<span class="button">', $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '</span>';
|
||||||
|
@ -665,7 +679,7 @@ sub part_subscribers {
|
||||||
sub allow_create_list {
|
sub allow_create_list {
|
||||||
# Let the user select options for list creation ...
|
# Let the user select options for list creation ...
|
||||||
|
|
||||||
my($username, $hostname, %labels, $j);
|
my($username, $hostname, %labels, $j, $domain); # by ooyama add dmain
|
||||||
|
|
||||||
# Work out if this user has a virtual host and set input accordingly ...
|
# Work out if this user has a virtual host and set input accordingly ...
|
||||||
if(-e "$QMAIL_BASE/virtualdomains") {
|
if(-e "$QMAIL_BASE/virtualdomains") {
|
||||||
|
@ -679,6 +693,9 @@ sub allow_create_list {
|
||||||
if(!defined($hostname)) {
|
if(!defined($hostname)) {
|
||||||
$username = "$USER-" if ($USER ne $ALIAS_USER);
|
$username = "$USER-" if ($USER ne $ALIAS_USER);
|
||||||
$hostname = $DEFAULT_HOST;
|
$hostname = $DEFAULT_HOST;
|
||||||
|
$domain = $DEFAULT_DOMAIN; # by ooyama add domain
|
||||||
|
}else{
|
||||||
|
$domain = $hostname;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<div id="create" class="container">';
|
print '<div id="create" class="container">';
|
||||||
|
@ -696,9 +713,11 @@ sub allow_create_list {
|
||||||
|
|
||||||
print '<div class="input">';
|
print '<div class="input">';
|
||||||
print '<span class="formfield">', $LANGUAGE{'listname'}, ': ', $q->textfield(-name=>'list', -size=>'20'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'listname'}, '"></span>';
|
print '<span class="formfield">', $LANGUAGE{'listname'}, ': ', $q->textfield(-name=>'list', -size=>'20'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'listname'}, '"></span>';
|
||||||
print '<span class="formfield">', $LANGUAGE{'listaddress'}, ': ', $q->textfield(-name=>'inlocal', -default=>$username, -size=>'10');
|
print '<p>'; # By ooyama For style
|
||||||
print ' @ ', $q->textfield(-name=>'inhost', -default=>$hostname, -size=>'30'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'listadd'}, '"></span>';
|
print '<span class="formfield">', $LANGUAGE{'listaddress'}, ': ', $q->textfield(-name=>'inlocal', -default=>$username, -size=>'20');
|
||||||
|
print ' @ ', $q->textfield(-name=>'inhost', -default=>$domain, -size=>'40'), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'listadd'}, '"></span>'; # by ooyama change to use domain
|
||||||
|
|
||||||
|
print '<p>'; # By ooyama For style
|
||||||
print '<span class="formfield">', $LANGUAGE{'listoptions'}, ':</span>';
|
print '<span class="formfield">', $LANGUAGE{'listoptions'}, ':</span>';
|
||||||
&display_options($DEFAULT_OPTIONS);
|
&display_options($DEFAULT_OPTIONS);
|
||||||
|
|
||||||
|
@ -820,10 +839,10 @@ sub list_config {
|
||||||
print '<div class="info">';
|
print '<div class="info">';
|
||||||
print '<p>', $LANGUAGE{'listname'}, ": <em>$listname</em></p>";
|
print '<p>', $LANGUAGE{'listname'}, ": <em>$listname</em></p>";
|
||||||
print '<p>', "$LANGUAGE{'listaddress'}: <em>$listaddress</em></p>";
|
print '<p>', "$LANGUAGE{'listaddress'}: <em>$listaddress</em></p>";
|
||||||
|
print '<p>', $LANGUAGE{'listoptions'}, ':</p>'; # by ooyama for style
|
||||||
print '</div>'; # end of config->info
|
print '</div>'; # end of config->info
|
||||||
|
|
||||||
print '<div class="input">';
|
print '<div class="input">';
|
||||||
print '<h2>', $LANGUAGE{'listoptions'}, ':</h2>';
|
|
||||||
|
|
||||||
# Print a list of options, selecting the ones that apply to this list ...
|
# Print a list of options, selecting the ones that apply to this list ...
|
||||||
&display_options($list->getconfig);
|
&display_options($list->getconfig);
|
||||||
|
@ -834,10 +853,11 @@ sub list_config {
|
||||||
$mimeremove = $list->getpart('mimeremove');
|
$mimeremove = $list->getpart('mimeremove');
|
||||||
$prefix = $list->getpart('prefix');
|
$prefix = $list->getpart('prefix');
|
||||||
|
|
||||||
print '<span class="formfield">', $LANGUAGE{'prefix'}, ': ', $q->textfield(-name=>'prefix', -default=>$prefix, -size=>12), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'prefix'}, '"></span>' if defined($prefix);
|
# by ooyama change for style and bug fix
|
||||||
print '<p class="formfield">', $LANGUAGE{'headerremove'}, ': <img src="', $HELP_ICON_URL, '" title="', $HELPER{'headerremove'}, '"><br>', $q->textarea(-name=>'headerremove', -default=>$headerremove, -rows=>5, -columns=>70), '</span>';
|
print '<span class="formfield">', $LANGUAGE{'prefix'}, ': ', $q->textfield(-name=>'prefix', -default=>$prefix, -size=>20), ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'prefix'}, '"></span><p>' if defined($prefix);
|
||||||
print '<span class="formfield">', $LANGUAGE{'headeradd'}, ': <img src="', $HELP_ICON_URL, '" title="', $HELPER{'headeradd'}, '"><br>', $q->textarea(-name=>'headeradd', -default=>$headeradd, -rows=>5, -columns=>70), '</div>';
|
print '<span class="formfield">', $LANGUAGE{'headerremove'}, ': <img src="', $HELP_ICON_URL, '" title="', $HELPER{'headerremove'}, '"><br>', $q->textarea(-name=>'headerremove', -default=>$headerremove, -rows=>5, -columns=>70), '</span><p>';
|
||||||
print '<span class="formfield">', $LANGUAGE{'mimeremove'}, ': <img src="', $HELP_ICON_URL, '" title="', $HELPER{'mimeremove'}, '"><br>', $q->textarea(-name=>'mimeremove', -default=>$mimeremove, -rows=>5, -columns=>70), '</span>' if defined($mimeremove);
|
print '<span class="formfield">', $LANGUAGE{'headeradd'}, ': <img src="', $HELP_ICON_URL, '" title="', $HELPER{'headeradd'}, '"><br>', $q->textarea(-name=>'headeradd', -default=>$headeradd, -rows=>5, -columns=>70), '</span><p>';
|
||||||
|
print '<span class="formfield">', $LANGUAGE{'mimeremove'}, ': <img src="', $HELP_ICON_URL, '" title="', $HELPER{'mimeremove'}, '"><br>', $q->textarea(-name=>'mimeremove', -default=>$mimeremove, -rows=>5, -columns=>70), '</span><p>' if defined($mimeremove);
|
||||||
|
|
||||||
if(open(WEBUSER, "<$WEBUSERS_FILE")) {
|
if(open(WEBUSER, "<$WEBUSERS_FILE")) {
|
||||||
my($webusers);
|
my($webusers);
|
||||||
|
@ -849,8 +869,8 @@ sub list_config {
|
||||||
|
|
||||||
print '<span class="formfield">', $LANGUAGE{'allowedtoedit'}, ': ';
|
print '<span class="formfield">', $LANGUAGE{'allowedtoedit'}, ': ';
|
||||||
print $q->textfield(-name=>'webusers', -value=>$webusers, -size=>'30');
|
print $q->textfield(-name=>'webusers', -value=>$webusers, -size=>'30');
|
||||||
print ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'webusers'}, '"></span>',
|
print ' <img src="', $HELP_ICON_URL, '" title="', $HELPER{'webusers'}, '"></span><p>',
|
||||||
print '<span class="help">', $HELPER{'allowedit'}, '</span>';
|
print '<span class="help">', $HELPER{'allowedit'}, '</span><p>';
|
||||||
|
|
||||||
}
|
}
|
||||||
print '</div>'; # end of config->input
|
print '</div>'; # end of config->input
|
||||||
|
@ -872,13 +892,15 @@ sub list_config {
|
||||||
sub update_config {
|
sub update_config {
|
||||||
# Save the new user entered config ...
|
# Save the new user entered config ...
|
||||||
|
|
||||||
my ($list, $options, $i, @inlocal, @inhost);
|
my ($list, $options, $i, @inlocal, @inhost, $opt_mime, $opt_prefix); # add by ooyama
|
||||||
$list = new Mail::Ezmlm("$LIST_DIR/$Q::list");
|
$list = new Mail::Ezmlm("$LIST_DIR/$Q::list");
|
||||||
|
|
||||||
# Work out the command line options ...
|
# Work out the command line options ...
|
||||||
foreach $i (grep {/\D/} keys %EZMLM_LABELS) {
|
foreach $i (grep {/\D/} keys %EZMLM_LABELS) {
|
||||||
if (defined($q->param($i))) {
|
if (defined($q->param($i))) {
|
||||||
$options .= $i;
|
$options .= $i;
|
||||||
|
$opt_mime = 1 if($i eq 'x'); # add by ooyama
|
||||||
|
$opt_prefix = 1 if($i eq 'f'); # add by ooyama
|
||||||
} else {
|
} else {
|
||||||
$options .= uc($i);
|
$options .= uc($i);
|
||||||
}
|
}
|
||||||
|
@ -898,8 +920,16 @@ sub update_config {
|
||||||
# Update headeradd, headerremove, mimeremove and prefix ...
|
# Update headeradd, headerremove, mimeremove and prefix ...
|
||||||
$list->setpart('headeradd', $q->param('headeradd'));
|
$list->setpart('headeradd', $q->param('headeradd'));
|
||||||
$list->setpart('headerremove', $q->param('headerremove'));
|
$list->setpart('headerremove', $q->param('headerremove'));
|
||||||
|
if($opt_mime){
|
||||||
$list->setpart('mimeremove', $q->param('mimeremove')) if defined($q->param('mimeremove'));
|
$list->setpart('mimeremove', $q->param('mimeremove')) if defined($q->param('mimeremove'));
|
||||||
|
}else{ # add by ooyama to delete option f
|
||||||
|
unlink "$LIST_DIR/$Q::list/mimeremove" if(-f "$LIST_DIR/$Q::list/mimeremove");
|
||||||
|
}
|
||||||
|
if($opt_prefix){
|
||||||
$list->setpart('prefix', $q->param('prefix')) if defined($q->param('prefix'));
|
$list->setpart('prefix', $q->param('prefix')) if defined($q->param('prefix'));
|
||||||
|
}else{ # add by ooyama to delete option f
|
||||||
|
unlink "$LIST_DIR/$Q::list/prefix" if(-f "$LIST_DIR/$Q::list/prefix");
|
||||||
|
}
|
||||||
|
|
||||||
&update_webusers();
|
&update_webusers();
|
||||||
}
|
}
|
||||||
|
@ -990,6 +1020,7 @@ sub edit_text {
|
||||||
my ($content);
|
my ($content);
|
||||||
my($list) = new Mail::Ezmlm("$LIST_DIR/$Q::list");
|
my($list) = new Mail::Ezmlm("$LIST_DIR/$Q::list");
|
||||||
$content = $list->getpart("text/$Q::file");
|
$content = $list->getpart("text/$Q::file");
|
||||||
|
from_to($content,$TEXT_ENCODE,'utf8'); # by ooyama for multibyte
|
||||||
|
|
||||||
# Begin of content
|
# Begin of content
|
||||||
print '<div id="edittext" class="container">';
|
print '<div id="edittext" class="container">';
|
||||||
|
@ -1031,7 +1062,9 @@ sub save_text {
|
||||||
# Save new text in DIR/text ...
|
# Save new text in DIR/text ...
|
||||||
|
|
||||||
my ($list) = new Mail::Ezmlm("$LIST_DIR/$Q::list");
|
my ($list) = new Mail::Ezmlm("$LIST_DIR/$Q::list");
|
||||||
$list->setpart("text/$Q::file", $q->param('content'));
|
my ($content) = $q->param('content');
|
||||||
|
from_to($content,'utf8',$TEXT_ENCODE); # by ooyama for multibyte
|
||||||
|
$list->setpart("text/$Q::file", $content);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1096,7 +1129,7 @@ sub display_options {
|
||||||
print '<span class="checkbox">', $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0]);
|
print '<span class="checkbox">', $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0]);
|
||||||
}
|
}
|
||||||
print '<img src="', $HELP_ICON_URL, '" border="0" title="', $EZMLM_LABELS{$i}[1] , '"></span>';
|
print '<img src="', $HELP_ICON_URL, '" border="0" title="', $EZMLM_LABELS{$i}[1] , '"></span>';
|
||||||
print '</td>'; $j++;
|
$j++; # By ooyama bug fix
|
||||||
if ($j >= 3) {
|
if ($j >= 3) {
|
||||||
$j = 0; print '</p><p>';
|
$j = 0; print '</p><p>';
|
||||||
}
|
}
|
||||||
|
@ -1111,7 +1144,7 @@ sub display_options {
|
||||||
print '<span class="checkbox">', $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0]);
|
print '<span class="checkbox">', $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0]);
|
||||||
}
|
}
|
||||||
print '<img src="', $HELP_ICON_URL, '" border="0" title="', $EZMLM_LABELS{$i}[1] , '"></span>';
|
print '<img src="', $HELP_ICON_URL, '" border="0" title="', $EZMLM_LABELS{$i}[1] , '"></span>';
|
||||||
print '<span class="formfield">', $q->textfield(-name=>"$i-value", -value=>$1||$EZMLM_LABELS{$i}[2], -size=>30), '</span>';
|
print '<span class="formfield">', $q->textfield(-name=>"$i-value", -value=>$1||$EZMLM_LABELS{$i}[2], -size=>50), '</span>';
|
||||||
print '</p>';
|
print '</p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Configuration file for ezmlm-web 2.3
|
# Configuration file for ezmlm-web 2.3.1
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
|
|
||||||
# This file is not just an ordinary configuration file - it contains valid
|
# This file is not just an ordinary configuration file - it contains valid
|
||||||
|
@ -62,7 +62,7 @@ $HTML_HEADER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER
|
||||||
# Footer for every page (.= concatinates)
|
# Footer for every page (.= concatinates)
|
||||||
$HTML_FOOTER = '</TD></TR></TABLE>';
|
$HTML_FOOTER = '</TD></TR></TABLE>';
|
||||||
$HTML_FOOTER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
$HTML_FOOTER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
||||||
$HTML_FOOTER .= '<FONT SIZE="-1"><A HREF="https://systemausfall.org/toolforge/ezmlm-web" TARGET="_blank">ezmlm-web</A> (v2.3) A web interface to <A HREF="http://www.ezmlm.org/" TARGET="_blank">ezmlm</A></FONT></TD></TR></TABLE>';
|
$HTML_FOOTER .= '<FONT SIZE="-1"><A HREF="https://systemausfall.org/toolforge/ezmlm-web" TARGET="_blank">ezmlm-web</A> (v2.3.1) A web interface to <A HREF="http://www.ezmlm.org/" TARGET="_blank">ezmlm</A></FONT></TD></TR></TABLE>';
|
||||||
|
|
||||||
# NEW:
|
# NEW:
|
||||||
# html properties (e.g. color, background-color) can be defined in a
|
# html properties (e.g. color, background-color) can be defined in a
|
||||||
|
@ -74,8 +74,10 @@ $HTML_TITLE = 'E Z Mailing List Manager';
|
||||||
# Optional: use a cascading style sheet (css)
|
# Optional: use a cascading style sheet (css)
|
||||||
$HTML_CSS_FILE = "css/default.css";
|
$HTML_CSS_FILE = "css/default.css";
|
||||||
|
|
||||||
# choose a language (en|de)
|
# choose a language (en|de|jp)
|
||||||
$HTML_LANGUAGE = 'en';
|
$HTML_LANGUAGE = 'en';
|
||||||
|
# choose a text charset (jis or another)
|
||||||
|
#$TEXT_ENCODE = 'jis';
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# include language-specific definitions
|
# include language-specific definitions
|
||||||
|
|
187
ezmlm-web-2.3.1/lang/jp.pm
Normal file
187
ezmlm-web-2.3.1/lang/jp.pm
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
# language-specific definitions for ezmlm-web
|
||||||
|
# in Japanese
|
||||||
|
|
||||||
|
# The meanings of the various ezmlm-make command line switches. The default
|
||||||
|
# ones match the ezmlm-idx 0.4 default ezmlmrc ... Alter them to suit your
|
||||||
|
# own ezmlmrc. Removing options from this list makes them unavailable
|
||||||
|
# through ezmlm-web - this could be useful for things like -w
|
||||||
|
|
||||||
|
%EZMLM_LABELS = (
|
||||||
|
# option => ['Short Name',
|
||||||
|
# 'Long Help Description'],
|
||||||
|
|
||||||
|
a => ['アーカイブ保存',
|
||||||
|
'メッセージをアーカイブする'],
|
||||||
|
b => ['アーカイブブロック',
|
||||||
|
'モデレータのみアーカイブにアクセス可能'],
|
||||||
|
# c => config. This is implicity called, so is not defined here
|
||||||
|
d => ['ダイジェスト作成',
|
||||||
|
'メッセージのダイジェストリストをセットアップする'],
|
||||||
|
# e => edit. Also implicity called, so not defined here
|
||||||
|
f => ['件名にPrefixを付加する',
|
||||||
|
'件名に指定したPrefix文字を付加する'],
|
||||||
|
g => ['アーカイブ制限',
|
||||||
|
'送信者が未登録の場合アーカイブのアクセスを拒否する'],
|
||||||
|
h => ['登録確認をしない',
|
||||||
|
'メールによる登録時に確認メールを送らない'],
|
||||||
|
i => ['インデックス作成',
|
||||||
|
'WWW アーカイブアクセス用インデックスの作成'],
|
||||||
|
j => ['登録解除確認をしない',
|
||||||
|
'メールによる登録解除時に確認メールを送らない'],
|
||||||
|
k => ['拒否リスト有効',
|
||||||
|
'拒否リストに登録されたアドレスを拒否する'],
|
||||||
|
l => ['登録者リスト取出',
|
||||||
|
'遠隔管理者に登録者リストを送る'],
|
||||||
|
m => ['投稿の審査',
|
||||||
|
'全ての投稿メッセージを審査する'],
|
||||||
|
n => ['テキスト編集',
|
||||||
|
'遠隔管理者にテキスト編集を許可する'],
|
||||||
|
o => ['モデレータのみ投稿可',
|
||||||
|
'モデレータ以外の投稿を拒否する'],
|
||||||
|
p => ['公開する',
|
||||||
|
'メールによる登録、登録解除などを有効にする'],
|
||||||
|
q => ['リクエスト形式有効',
|
||||||
|
'local-request@host のメールを処理する'],
|
||||||
|
r => ['遠隔管理',
|
||||||
|
'遠隔管理を有効にする'],
|
||||||
|
s => ['登録の審査',
|
||||||
|
'登録を審査する'],
|
||||||
|
t => ['Trailerを付加する',
|
||||||
|
'メッセージの末尾にTrailerを付加する'],
|
||||||
|
u => ['登録者のみ投稿可',
|
||||||
|
'登録者の投稿のみを受け付ける'],
|
||||||
|
# v => version. I doubt you will really need this ;-)
|
||||||
|
w => ['警告を出さない',
|
||||||
|
'ezmlm-warn(1) の挙動を抑止する'],
|
||||||
|
x => ['指定mime typeの削除',
|
||||||
|
'指定したmime typeの貼付ファイルを削除する'],
|
||||||
|
# y => not used
|
||||||
|
# z => not used
|
||||||
|
|
||||||
|
# These all take an extra argument, which is the default value to use
|
||||||
|
|
||||||
|
0 => ['サブリストにする',
|
||||||
|
'指定したメインリストのサブリストにする',
|
||||||
|
'mainlist@host'],
|
||||||
|
# 1 => not used
|
||||||
|
# 2 => not used
|
||||||
|
3 => ['送信者アドレス固定',
|
||||||
|
'指定した Fromアドレスに固定する',
|
||||||
|
'fromarg'],
|
||||||
|
4 => ['ダイジェストオプション',
|
||||||
|
'ezmlm-tstdig(1) のオプションを指定する',
|
||||||
|
'-t24 -m30 -k64'],
|
||||||
|
5 => ['オーナーアドレス',
|
||||||
|
'リストオーナーのアドレスを指定する',
|
||||||
|
''],
|
||||||
|
6 => ['SQLデータベース',
|
||||||
|
'SQLデータベースへの接続情報',
|
||||||
|
'host:port:user:password:datab:table'],
|
||||||
|
7 => ['メッセージモデレータのデータベース',
|
||||||
|
'メッセージモデレータのデータベースへのフルパス',
|
||||||
|
'/some/full/path'],
|
||||||
|
8 => ['登録モデレータのデータベース',
|
||||||
|
'登録モデレータのデータベースへのフルパス',
|
||||||
|
'/some/full/path'],
|
||||||
|
9 => ['遠隔管理者データベース',
|
||||||
|
'遠隔管理者のデータベースへのフルパス',
|
||||||
|
'/some/full/path']
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
# This list defines most of the context sensitive help in ezmlm-web. What
|
||||||
|
# isn't defined here is the options, which are defined above ... You can
|
||||||
|
# alter these if you feel something else would make more sense to your users
|
||||||
|
# Just be careful of what can fit on a screen!
|
||||||
|
|
||||||
|
%HELPER = (
|
||||||
|
|
||||||
|
# These should be self explainitory
|
||||||
|
addaddress => 'RFC822 に準拠したメールアドレスを入れます 例; J Random User <jru@on.web.za>',
|
||||||
|
addaddressfile => 'または RFC822 に準拠したアドレスを、1行毎に含むテキストファイルを選択します',
|
||||||
|
moderator => 'モデレータ: 登録や投稿を審査する人のリスト',
|
||||||
|
deny => '拒絶リスト: メーリングリストへの参加を拒絶する人のリスト',
|
||||||
|
allow => '許可リスト: メーリングリストへの参加を特に許可する人のリスト',
|
||||||
|
digest => 'ダイジェストリスト: 全てのメッセージのダイジェストの受け取りを許可された人のリスト',
|
||||||
|
webarch => 'ウェブベースのアーカイブリストの閲覧',
|
||||||
|
config => 'メーリングリストの設定の変更',
|
||||||
|
listname => 'リスト選択時に表示される名前.また、実際に作成されるサブディレクトリの名前.',
|
||||||
|
listadd => 'メーリングリストの投稿に使用されるアドレス.特殊な場合を除き、- 以前は変更削除しないこと',
|
||||||
|
webusers => 'NB! 現在は、ここで指定できるユーザーは実在のユーザーに限る. ユーザーの追加は将来の追加課題',
|
||||||
|
prefix => '件名の先頭に付加される文字列 #で、メッセージ番号がつきます',
|
||||||
|
headerremove => 'メッセージから取り除くヘッダーを指定する',
|
||||||
|
headeradd => 'メッセージに追加するヘッダーを指定する',
|
||||||
|
mimeremove => '指定した mime type の貼付ファイルをメッセージから削除する',
|
||||||
|
allowedit => 'ユーザー名のカンマ区切りリストまたは、<CODE>ALL</CODE> (有効な全てのユーザー)',
|
||||||
|
mysqlcreate => 'MySQLに必要なテーブルを作成する'
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
# This defines the captions of each of the buttons in ezmlm-web, and allows
|
||||||
|
# you to configure them for your own language or taste. Since these are used
|
||||||
|
# by the switching algorithm it is important that every button has a unique
|
||||||
|
# caption - ie we can't have two 'Edit' buttons doing different things.
|
||||||
|
|
||||||
|
%BUTTON = (
|
||||||
|
|
||||||
|
# These MUST all be unique!
|
||||||
|
create => '作成',
|
||||||
|
createlist => 'リスト作成',
|
||||||
|
edit => '編集',
|
||||||
|
delete => '削除',
|
||||||
|
deleteaddress => 'アドレス削除',
|
||||||
|
addaddress => 'アドレス追加',
|
||||||
|
moderators => 'モデレータ',
|
||||||
|
denylist => '拒絶リスト',
|
||||||
|
allowlist => '許可リスト',
|
||||||
|
digestsubscribers => 'ダイジェスト登録者',
|
||||||
|
configuration => '設定',
|
||||||
|
yes => 'はい',
|
||||||
|
no => 'いいえ',
|
||||||
|
updateconfiguration => '設定更新',
|
||||||
|
edittexts => 'テキスト編集',
|
||||||
|
editfile => 'ファイル編集',
|
||||||
|
savefile => 'ファイル保存',
|
||||||
|
webarchive => 'ウェブアーカイブ',
|
||||||
|
selectlist => 'リスト選択',
|
||||||
|
subscribers => '登録者編集',
|
||||||
|
cancel => 'キャンセル',
|
||||||
|
resetform => 'リセット',
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
# This defines the fixed text strings that are used in ezmlm-web. By editing
|
||||||
|
# these along with the button labels and help texts, you can convert ezmlm-web
|
||||||
|
# to another language :-) If anyone gets arround to doing complete templates
|
||||||
|
# for other languages I would appreciate a copy so that I can include it in
|
||||||
|
# future releases of ezmlm-web.
|
||||||
|
|
||||||
|
%LANGUAGE = (
|
||||||
|
nop => 'Action not yet implemented',
|
||||||
|
chooselistinfo => "<UL><LI>メーリングリストを選択するか、または、 [$BUTTON{'create'}] ボタンを押して作成してください.<LI>変更する場合は、選択して、 [$BUTTON{'edit'}] ボタンを押してください.<LI>削除する場合は、選択して、 [$BUTTON{'delete'}] ボタンを押してください.</UL>",
|
||||||
|
confirmdelete => '削除確認', # list name
|
||||||
|
subscribersto => '登録者編集', # list name
|
||||||
|
subscribers => '登録者',
|
||||||
|
additionalparts => 'リスト付加情報',
|
||||||
|
posting => '投稿',
|
||||||
|
subscription => '登録',
|
||||||
|
remoteadmin => '遠隔管理',
|
||||||
|
for => 'for', # as in; moderators for blahlist
|
||||||
|
createnew => '新規リスト作成',
|
||||||
|
listname => 'リスト名',
|
||||||
|
listaddress => 'リストアドレス',
|
||||||
|
listoptions => 'リストオプション',
|
||||||
|
allowedtoedit => 'リスト編集許可者',
|
||||||
|
editconfiguration => 'リスト設定編集',
|
||||||
|
prefix => '件名に付加する文字 prefix',
|
||||||
|
headerremove => '削除するヘッダー情報',
|
||||||
|
headeradd => '追加するヘッダー情報',
|
||||||
|
mimeremove => '削除する貼付ファイルのmime type',
|
||||||
|
edittextinfo => "左側にある一覧は、DIR/text の中にあるテキストファイルです. <BR>これらのファイルは、ユーザーのリクエストに対する返信内容,または、配信されるメールに付加される内容です.<P>このファイルを編集するには, 左の一覧から選択して、 [$BUTTON{'editfile'}] ボタンを押します.<P>終了または、中止するときは、[$BUTTON{'cancel'}] ボタンを押します.",
|
||||||
|
editingfile => 'ファイル編集',
|
||||||
|
editfileinfo => '<BIG><STRONG>マネージ用</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> リスト名<BR><TT><STRONG><#A#></STRONG></TT> 投稿者アドレス<BR><TT><STRONG><#R#></STRONG></TT> 投稿者が返信するアドレス<P><BIG><STRONG>メッセージ埋め込み用</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> リスト名<BR><TT><STRONG><#A#></STRONG></TT> 受け取りアドレス<BR><TT><STRONG><#R#></STRONG></TT> 拒絶アドレス</UL>',
|
||||||
|
mysqlcreate => '必要ならば MySQL データベースを作成',
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
# === Configuration file ends ===
|
Loading…
Reference in a new issue