new trunk taken from ezmlm-web 3.0

This commit is contained in:
lars 2005-12-25 16:12:31 +00:00
parent 93f607c24e
commit fd93f61edd
49 changed files with 3097 additions and 1974 deletions

39
template/config_admin.cs Normal file
View file

@ -0,0 +1,39 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigAdmin) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigAdmin) ?></p>
</div>
<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">
<input type="hidden" name="config_subset" value="admin" />
<ul>
<!-- enable remote administration -->
<li><?cs call:checkbox("r") ?>
<ul>
<!-- administrators may request subscribers list -->
<li><?cs call:checkbox("l") ?></li>
<!-- administrators may edit text files via mail -->
<li><?cs call:checkbox("n") ?></li>
<!-- custom path to administrators database -->
<li><?cs call:setting("8") ?></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>

163
template/config_all.cs Normal file
View file

@ -0,0 +1,163 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigAll) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigAll) ?></p>
</div>
<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">
<input type="hidden" name="config_subset" value="all" />
<ul>
<!-- public subsccription and archive -->
<li><?cs call:checkbox("p") ?></li>
<!-- 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>
<!-- 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>
<!-- ezmlm-web administators -->
<?cs if:Data.WebUser.show && Data.List.WebUsers ?>
<li><?cs var:html_escape(Lang.Misc.AllowedToEdit) ?>
<ul><li><input type="text"
name="webusers" value="<?cs var:html_escape(Data.List.WebUsers)
?>" size="40" /><br/>
</li></ul></li><?cs /if ?>
<li><!-- include default form values -->
<?cs include:TemplateDir + '/form_common.cs' ?>
<input type="hidden" name="action" value="config_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
</ul>
</form>
</fieldset>

View file

@ -0,0 +1,42 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigArchive) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigArchive) ?></p>
</div>
<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">
<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>
<!-- block unknown users from archive -->
<li><?cs call:checkbox("g") ?></li>
</ul></li>
<!-- 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>
</form>
</fieldset>

View file

@ -1,58 +0,0 @@
<div id="parts" class="container">
<div class="title">
<!-- TODO: einheitliche Formatierung fuer listaddress - span und css -->
<h2><?cs var:Lang.Misc.For <i><?cs var:Data.ListName ?></i></h2>
<h3><?cs var:Data.ListAddress ?></h3>
<hr>
</div>
<!-- Moderation -->
<?cs if:Data.isModerated ?>
<?cs include:TemplateDir + "modpath_info.cs" ?>
<?cs /if ?>
<!-- form -->
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="<?cs var:Data.Form.State ?>">
<input type="hidden" name="list" value="<?cs var:Data.ListName ?>">
<div class="list">
# TODO: the same as of "display_list.cs"
# list of moderators/administrators
<?cs if:Data.ListCount >0 ?>
<!-- Keep selection box a resonable size - suggested by Sebastian Andersson -->
<?cs if:(Data.ListCount > 25) ?>
<?cs set:Data.ScrollSize = 25 ?>
<?cs else ?>
<?cs set:Data.ScrollSize = Data.ListCount ?>
<?cs /if ?>
<select name="delsubscriber" tabindex="1" multiple="true" size="<?cs var:Data.ScrollSize ?>">
<?cs each:item = Data.List ?>
<!-- TODO: pretty names sind notwendig -->
<option><?cs var:item ?></option>
<?cs /each ?>
</select>
<?cs /if ?>
<div class="add_remove">
<?cs if:Data.ListCount > 0) ?>
<span class="button"><input type="submit"
value="<?cs var:Lang.Buttons.DeleteAddress ?>" name="action"/></span>
<?cs /if ?>
<span class="formfield">
<input type="text" name="addsubscriber" size="40"/> <?cs call:help_icon("AddAddress") ?></span>
<?cs if:FileUploadAllowed ?><span class="formfield">
<input type="filefield" name="addfile" size="20" maxlength="100"/> <?cs call:help_icon("AddAddressFile") ?></span><?cs /if ?>
<span class="button">
<input type="submit" name="action" value="<?cs var:Lang.Buttons.AddAddress ?>"/></span>
<span class="button">
<input type="submit" name="action" value="<?cs var:Lang.Buttons.Subscribers ?>"/></span>
</div>
</form>
</div>

50
template/config_main.cs Normal file
View file

@ -0,0 +1,50 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigMain) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigMain) ?></p>
</div>
<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">
<input type="hidden" name="config_subset" value="main" />
<ul>
<!-- list owner address -->
<li><?cs call:setting("5") ?></li>
<!-- set main list name -->
<li><?cs call:setting("0") ?></li>
<!-- process mailman-style requests -->
<li><?cs call:checkbox("q") ?></li>
<!-- remove ezmlm-warn -->
<li><?cs call:checkbox("w") ?></li>
<!-- mysql database -->
<?cs if:Data.Modules.mySQL ?>
<li><?cs call:setting("6") ?></li><?cs /if ?>
<!-- ezmlm-web administators -->
<?cs if:Data.WebUser.show && Data.List.WebUsers ?>
<li><?cs var:html_escape(Lang.Misc.AllowedToEdit) ?>
<ul><li><input type="text"
name="webusers" value="<?cs var:html_escape(Data.List.WebUsers)
?>" size="40" /><br/>
</li></ul></li><?cs /if ?>
<li><!-- include default form values -->
<?cs include:TemplateDir + '/form_common.cs' ?>
<input type="hidden" name="action" value="config_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
</ul>
</form>
</fieldset>

View file

@ -0,0 +1,73 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigPosting) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigPosting) ?></p>
</div>
<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">
<input type="hidden" name="config_subset" value="posting" />
<ul>
<!-- 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") ?>
<ul>
<!-- only moderators may post -->
<li><?cs call:checkbox("o") ?></li>
<!-- nesage moderator -->
<li><?cs call:setting("7") ?></li>
</ul></li>
<!-- message size limit -->
<li><input type="checkbox" name="msgsize_max_state"
value="selected" id="msgsize_max_state" <?cs
if:Data.List.MsgSize.Max>0 ?>checked="checked"<?cs /if ?> />
<label for="msgsize_max_state"><?cs var:html_escape(Lang.Misc.MessageSize.Max) ?></label>
<ul><li><input type="text" name="msgsize_max_value" size="10"
style="text-align:right" value="<?cs
alt:Data.List.MsgSize.Max ?>30000<?cs /alt ?>" /> <?cs
var:html_escape(Lang.Misc.MessageSize.Unit) ?></li></ul></li>
<li><input type="checkbox" name="msgsize_min_state"
value="selected" id="msgsize_min_state" <?cs
if:Data.List.MsgSize.Min>0 ?>checked="checked"<?cs /if ?> />
<label for="msgsize_min_state"><?cs var:html_escape(Lang.Misc.MessageSize.Min) ?></label>
<ul><li><input type="text" name="msgsize_min_value" size="10"
style="text-align:right" value="<?cs
alt:Data.List.MsgSize.Min ?>2<?cs /alt ?>" /> <?cs
var:html_escape(Lang.Misc.MessageSize.Unit) ?></li></ul></li>
<!-- mimeremove and mimereject -->
<li><?cs call:checkbox("x") ?>
<?cs if:(Data.List.Options.x == 1) ?><ul>
<!-- turn off mimermove, if "-x" is not activated, as it will be
removed during the next config_update -->
<li><?cs var:html_escape(Lang.Misc.MimeReject) ?>:<br/>
<textarea name="mimereject" rows="4" cols="70"><?cs
var:html_escape(Data.List.MimeReject) ?></textarea></li>
</ul></li><?cs /if ?>
<li><!-- include default form values -->
<?cs include:TemplateDir + '/form_common.cs' ?>
<input type="hidden" name="action" value="config_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
</ul>
</form>
</fieldset>

View file

@ -0,0 +1,65 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigProcess) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigProcess) ?></p>
</div>
<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">
<input type="hidden" name="config_subset" value="processing" />
<ul>
<!-- 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 mimermove, if "-x" is not activated, as it will be
removed during the next config_update -->
<ul><li><textarea name="trailing_text" rows="3" cols="72"><?cs
var:html_escape(Data.List.TrailingText) ?></textarea></li>
</ul></li><?cs /if ?>
<!-- from address -->
<li><?cs call:setting("3") ?></li>
<!-- mimeremove and mimereject -->
<li><?cs call:checkbox("x") ?>
<?cs if:(Data.List.Options.x == 1) ?><ul>
<!-- turn off mimermove, if "-x" is not activated, as it will be
removed during the next config_update -->
<li><?cs var:html_escape(Lang.Misc.MimeRemove) ?>:<br/>
<textarea name="mimeremove" rows="4" cols="70"><?cs
var:html_escape(Data.List.MimeRemove) ?></textarea></li>
</ul></li><?cs /if ?>
<!-- headerremove -->
<li><?cs var:html_escape(Lang.Misc.HeaderRemove) ?>:<br/>
<ul><li><textarea name="headerremove" rows="5" cols="70"><?cs
var:html_escape(Data.List.HeaderRemove) ?></textarea></li></ul></li>
<!-- headeradd -->
<li><?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
<ul><li><textarea name="headeradd" rows="5" cols="70"><?cs
var:html_escape(Data.List.HeaderAdd) ?></textarea></li></ul></li>
<li><!-- include default form values -->
<?cs include:TemplateDir + '/form_common.cs' ?>
<input type="hidden" name="action" value="config_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateConfiguration) ?></button></li>
</ul>
</form>
</fieldset>
<?cs include:TemplateDir + '/help_tag_susbtitution.cs' ?>

View file

@ -0,0 +1,42 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ConfigSub) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ConfigSub) ?></p>
</div>
<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">
<input type="hidden" name="config_subset" value="subscription" />
<ul>
<!-- public subsccription and archive -->
<li><?cs call:checkbox("p") ?></li>
<!-- 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") ?></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>

View file

@ -1,17 +0,0 @@
<div id="delete" class="container">
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="confirm_delete">
<input type="hidden" name="list" value="<?cs var:Data.ListName ?>">
<div class="title">
<h2><?cs var:Lang.Misc.ConfirmDelete ?> <i><?cs var:Data.ListName ?></i></h2>
<div class="question">
<span class="button"><input type="submit" name="confirm"
value="<?cs var:Lang.Buttons.Yes ?>" tabindex="1"></span>
<span class="button"><input type="submit" name="confirm"
value="<?cs var:Lang.Buttons.No ?>" tabindex="2"></span>
</div>
</div>
</form>
</div>

View file

@ -1,43 +0,0 @@
<div id="create" class="container">
<div class="title">
<h2><?cs var:Lang.Misc.CreateNew ?></h2>
<hr>
</div>
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="create">
<div class="input">
<span class="formfield"><?cs var:Lang.Misc.ListName ?>: <input type="text" name="list" size="20"><?cs call:help_icon("ListName") ?></span>
<span class="formfield"><?cs var:Lang.Misc.ListAddress ?>: <input type="text" name="inlocal" size="10" value="<?cs var:Data.UserName ?>">
<?cs call:help_icon("ListName") ?> @ <input type="text" name="inhost" value="<?cs var:Data.HostName ?>" size="30"><?cs call:help_icon("ListAdd") ?></span>
<span class="formfield"><?cs var:Lang.Misc.ListOptions ?>:</span>
<?cs include:TemplateDir + "display_options.cs" ?>
<?cs if:Data.mysqlModule ?>
<!-- Allow creation of mysql table if the module allows it -->
<span class="formfield"><input type="checkbox" name="sql"label="<?cs var:Lang.Misc.mysqlCreate ?>" on="1"><?cs call:help_icon("mysqlCreate") ?></span>
<?cs /if ?>
<?cs if:Data.WebUser.show ?>
<span class="formfield"><?cs var:Lang.Misc.AllowedToEdit ?>: <input type="text"
name="webusers" size="30" value="<?cs var:Data.WebUser.UserName ?>">
<?cs call:help_icon("WebUsers") ?></span>
# TODO: the following span is quite unusual
<span class="help"><?cs var:Lang.Helper.AllowEdit ?></span>
<?cs /if ?>
</div>
<div class="question">
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.Create ?>"></span>
<span class="button"><input type="reset" name="action"
value="<?cs var:Lang.Buttons.ResetForm ?>"></span>
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.Cancel ?>"></span>
</div>
</form>
</div>

View file

@ -1,102 +0,0 @@
<div id="edit" class="container">
<div class="title">
<h2><?cs var:Lang.Misc.SubscribersTo ?> <i><?cs var:Data.ListName ?></i></h2>
<h3><?cs var:Data.ListAddress ?></h3>
<hr>
</div>
<div class="list">
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="edit">
<input type="hidden" name="list" value="<?cs var:Data.ListName ?>">
<!-- scrollbox for list's subscribers -->
<!-- Keep selection box a reasonable size - suggested by Sebastian Andersson -->
<?cs if:(Data.SubscribersCount > 25) ?>
<?cs set:Data.ScrollSize = 25 ?>
<?cs else ?>
<?cs set:Data.ScrollSize = Data.SubscribersCount ?>
<?cs /if ?>
<!-- TODO: this div should float to left - the buttons should be at the right -->
<select name="delsubscriber" tabindex="1" size="<?cs var:Data.ScrollSize ?>" multiple="yes">
<?cs each:item = Data.Subscribers ?>
<option><?cs var:item ?></option>
<?cs /each ?>
</select>
<div class="add_remove">
<?cs if:(Data.SubscribersCount > 0) ?>
<p><?cs var:Data.SubscribersCount ?> <?cs var:Lang.Misc.Subscribers ?></p>
<span class="button"><input type="submit" name="action" tabindex="2"
value="<?cs var:Lang.Buttons.DeleteAddress ?>"></span>
<?cs /if ?>
<!-- TODO: das helper icon ist erst in der naechsten Zeile -->
<p class="formfield"><input type="text" name="addsubscriber"
tabindex="3" size="40"/><?cs call:help_icon("AddAddress") ?></p>
<!-- TODO: eventuell ein BR einfuegen -->
<p class="formfield"><input type="file" name="addfile" size="20"
maxlength="100" tabindex="4"/><?cs call:help_icon("AddAddressFile") ?></p>
<p class="button"><input type="submit" tabindex="5" name="action"
value="<?cs var:Lang.Buttons.AddAddress ?>"/></p>
</div>
<div class="options">
<?cs if:Data.ConfigAvail.Extras ?>
<!-- at least one extra config option is available -->
<h3><?cs var:Lang.Misc.AdditionalParts ?>:</h3>
<?cs /if ?>
<p>
<?cs if:Data.ConfigAvail.Moderation ?>
<!-- moderation -->
<span class="button"><input type="submit" tabindex="6" name="action"
value="<?cs var:Lang.Buttons.Moderators ?>"/>
<?cs call:help_icon("Moderator") ?></span>
<?cs /if ?>
<?cs if:Data.ConfigAvail.DenyList ?>
<!-- deny lists -->
<span class="button"><input type="submit" tabindex="7" name="action"
value="<?cs var:Lang.Buttons.DenyList ?>"/>
<?cs call:help_icon("Deny") ?></span>
<?cs /if ?>
<?cs if:Data.ConfigAvail.AllowList ?>
<!-- allow lists -->
<span class="button"><input type="submit" tabindex="8" name="action"
value="<?cs var:Lang.Buttons.AllowList ?>"/>
<?cs call:help_icon("Allow") ?></span>
<?cs /if ?>
<?cs if:Data.ConfigAvail.Digest ?>
<!-- digest subscribers -->
<span class="button"><input type="submit" tabindex="9" name="action"
value="<?cs var:Lang.Buttons.DigestSubscribers ?>"/>
<?cs call:help_icon("Digest") ?></span>
<?cs /if ?>
</p>
<p>
<!-- web archive -->
<?cs if:Data.ConfigAvail.WebArch ?>
<span class="button"><input type="submit" tabindex="10" name="action"
value="<?cs var:Lang.Buttons.WebArchive ?>"/>
<?cs call:help_icon("WebArch") ?></span>
<?cs /if ?>
<!-- extra config options -->
<span class="button"><input type="submit" tabindex="11" name="action"
value="<?cs var:Lang.Buttons.Configuration ?>"/>
<?cs call:help_icon("Config") ?></span>
<span class="button"><input type="submit" tabindex="12" name="action"
value="<?cs var:Lang.Buttons.SelectList ?>"/>
<?cs call:help_icon("SelectList") ?></span>
</p>
</div>
</form>
</div>
</div>

View file

@ -1,23 +0,0 @@
<!-- $opts -->
<p>
<!-- TODO: das sollte so etwas, wie eine Tabelle werden -->
<?cs each:item = Data.ListOptions ?>
<div class="checkbox"><input type="checkbox"
name="<?cs var:item.name ?>" value="<?cs var:item.name ?>"
<?cs if:item.state ?> checked="checked"<?cs /if ?>>
<?cs var:item.short ?><?cs call:generic_icon(item.long) ?></div>
<?cs /each ?>
</p>
<p>
<?cs each:item = Data.ListSettings ?>
<div class="checkbox"><input type="checkbox" name="<?cs var:item.name ?>"
value="<?cs var:item.name ?>"<?cs if:item.state ?> checked="checked"<?cs /if ?>>
<?cs var:item.short ?>
<span class="formfield"><input type="text" name="<?cs var:item.name ?>-value"
value="<?cs var:item.value ?>" size="30">
<?cs call:generic_icon(item.long) ?></div>
<!-- TODO: die indirekte Namensangabe des textfield is unsauber - sollte nicht
mit dem Code vermischt sein -->
<?cs /each ?>
</p>

View file

@ -1,32 +0,0 @@
<div id="edittext" class="container">
<div class="title">
<h2><?cs var:Lang.Misc.EditingFile ?> <?cs var:Data.File.Name ?></h2>
</div>
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="edit_text">
<input type="hidden" name="list" value="<?cs var:Data.ListName ?>">
<input type="hidden" name="file" value="<?cs var:Data.File.Name ?>">
<div class="input">
<span class="formfield"><textarea name="content"
rows="20" cols="72"><?cs var:Data.File.Content ?></textarea></span>
</div>
<div class="info">
<?cs var:Lang.Misc.EditFileInfo ?>
</div>
<div class="question">
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.SaveFile ?>"></span>
<span class="button"><input type="reset" name="action"
value="<?cs var:Lang.Buttons.ResetForm ?>"></span>
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.Cancel ?>"></span>
</div>
</form>
</div>

View file

@ -1,9 +1,8 @@
</td></tr></table>
<table border="0" cellpadding="5" cellspacing="5" align="center" width="99%">
<tr><td bgcolor="#e0e0ff"><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>
<div id="footer">
<a href="https://systemausfall.org/toolforge/ezmlm-web">ezmlm-web</a> (v3.0) - <?cs var:html_escape(Lang.Misc.FooterText) ?> <a href="http://www.ezmlm.org/" target="_blank">ezmlm</a>
<br />
</div>
</body>
</html>

9
template/form_common.cs Normal file
View file

@ -0,0 +1,9 @@
<!-- this file should be included in every form with checkboxes and settings -->
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
<!-- "available_options" is filled by the checkbox macro -->
<input type="hidden" name="options_available" value="<?cs var:available_options ?>" />
<!-- "available_settings" is filled by the setting macro -->
<input type="hidden" name="settings_available" value="<?cs var:available_settings ?>" />

View file

@ -5,21 +5,21 @@
<html>
<head>
<title><?cs var:PageTitle ?></title>
<title><?cs var:Config.PageTitle ?></title>
<meta http-equiv="pragma" content="no-cache" /> <!-- for browsers -->
<meta http-equiv="cache-control" content="no-cache" /> <!-- for proxys -->
<meta http-equiv="content-language" content="<?cs var:Language ?>" />
<meta http-equiv="content-language" content="<?cs var:html_escape(Language) ?>" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Author" content="guy-ezmlm[at]rucus.ru.ac.za" />
<meta http-equiv="Author" content="devel[at]sumpfralle.de" />
<meta http-equiv="expire" content="-1d" />
<link rel="stylesheet" type="text/css" href="<?cs var:Stylesheet ?>" />
</head>
<body>
<p>
<center><table border="3" align="center" cellpadding="5"><tr><td bgcolor="#e0e0ff"><font size=+3 color=#000080><strong>E Z Mailing List Manager</strong></font></td></tr></table></center>
</p>
<table border="0" cellpadding="5" cellspacing="5" align="center" width="99%"><tr><td bgcolor="#e0e0ff">
<div id="oben">
<div id="perm_nav">
<?cs var:Config.PageTitle ?>
</div>
<h1 class="oben">ezmlm-web</h1>
</div>

View file

@ -0,0 +1,21 @@
<fieldset class="info">
<legend><?cs var:html_escape(Lang.Legend.TextFileInfo) ?> </legend>
<ul>
<li><?cs var:html_escape(Lang.Misc.EditFileInfo.CommonTags) ?><ul>
<li><tt>&lt;#l#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.ListNameLocal) ?></li>
<li><tt>&lt;#h#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.ListNameHost) ?></li>
<li><tt>&lt;#n#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.ListNameHost) ?></li>
</ul></li>
<li>ezmlm-manage<ul>
<li><tt>&lt;#A#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.SubAddress) ?></li>
<li><tt>&lt;#R#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.SubReplyAddress) ?></li>
</ul></li>
<li>ezmlm-store<ul>
<li><tt>&lt;#A#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.AcceptanceAddress) ?></li>
<li><tt>&lt;#R#&gt;</tt> <?cs var:html_escape(Lang.Misc.EditFileInfo.RejectionAddress) ?></li>
</ul></li>
</ul>
</fieldset>

View file

@ -1,57 +0,0 @@
<div id="config" class="container">
<div class="title">
<h2><?cs var:Lang.Misc.EditConfiguration ?></h2>
<hr>
</div>
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="configuration">
<input type="hidden" name="list" value="<?cs var:Data.ListName ?>">
<div class="info">
<p><?cs var:Lang.Misc.ListName ?>: <em><?cs var:Data.ListName ?></em></p>
<p><?cs var:Lang.Misc.ListAddress ?>: <em><?cs var:Data.ListAddress ?></em></p>
</div>
<div class="input">
<h2><?cs var:Lang.Misc.ListOptions ?> :</h2>
<?cs include:TemplateDir + "display_options.cs" ?>
<?cs if:Data.List.Prefix ?>
<div class="formfield"><?cs var:Lang.Misc.Prefix ?>: <input type="text" name="prefix"
value="<?cs var:Data.List.Prefix ?>" size="12"><?cs call:help_icon("Prefix") ?></div>
<?cs /if ?>
<div class="formfield"><?cs var:Lang.Misc.HeaderRemove ?>:<?cs call:help_icon("HeaderRemove") ?>
<br/><textarea name="headerremove" rows="5" cols="70"><?cs var:Data.List.HeaderRemove ?></textarea></div>
<div class="formfield"><?cs var:Lang.Misc.HeaderAdd ?>:<?cs call:help_icon("HeaderAdd") ?>
<br/><textarea name="headeradd" rows="5" cols="70"><?cs var:Data.List.HeaderAdd ?></textarea></div>
<?cs if:Data.List.MimeRemove ?>
<div class="formfield"><?cs var:Lang.Misc.MimeRemove ?>:<?cs call:help_icon("MimeRemove") ?>
<br/><textarea name="mimeremove" rows="5" cols="70"><?cs var:Data.List.MimeRemove ?></textarea></div>
<?cs /if ?>
<?cs if:Data.List.WebUsers ?>
<div>
<span class="formfield"><?cs var:Lang.Misc.AllowedToEdit ?>: <input type="text"
name="webusers" value="<?cs var:Data.List.WebUsers ?>" size="30">
<cs call:help_icon("WebUsers") ?></span>
<span class="help"><?cs var:Lang.Helper.AllowEdit ?></span>
</div>
<?cs /if ?>
</div>
<div class="question">
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.UpdateConfiguration ?>"></span>
<span class="button"><input type="reset" name="action"
value="<?cs var:Lang.Buttons.ResetForm ?>"></span>
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.Cancel ?>"></span>
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.EditTexts ?>"></span>
</div>
</form>
</div>

40
template/list_create.cs Normal file
View file

@ -0,0 +1,40 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ListCreate) ?></h1>
</div>
<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:Data.Modules.MySQL ?>
<!-- Allow creation of mysql table if the module allows it -->
<li><?cs call:setting("6") ?></li><?cs /if ?>
<?cs if:Data.WebUser.show ?>
<li><label for="webusers"><?cs var:html_escape(Lang.Misc.AllowedToEdit) ?></label>
<ul><li><input type="text" id="webusers"
name="webusers" size="30" value="<?cs
var:html_escape(Data.WebUser.UserName) ?>"></li></ul></li>
<?cs /if ?>
</ul>
<!-- include default form values -->
<?cs include:TemplateDir + '/form_common.cs' ?>
<input type="hidden" name="action" value="list_create_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.Create) ?></button>
</form>
</fieldset>

20
template/list_delete.cs Normal file
View file

@ -0,0 +1,20 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ListDelete) ?> &quot;<?cs var:html_escape(Data.List.Name) ?>&quot;</h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.ListDelete) ?></p>
</div>
<fieldset class="form">
<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">
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
<input type="hidden" name="action" value="list_delete_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.ConfirmDeletion) ?></button>
</form>
</fieldset>

39
template/list_select.cs Normal file
View file

@ -0,0 +1,39 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ListSelect) ?></h1>
</div>
<fieldset>
<legend>
<?cs var:html_escape(Lang.Legend.AvailableLists) ?>
</legend>
<!-- to get a multiple-columns-design, we do strange things ... -->
<?cs set:listnum=subcount(Data.Lists) ?>
<?cs if:listnum > 0 ?>
<?cs if:listnum < 15 ?><?cs set:columns=1 ?><?cs
elif:listnum < 30 ?><?cs set:columns=2 ?><?cs
else ?><?cs set:columns=3 ?><?cs /if ?>
<?cs set:col_len=listnum / columns ?>
<?cs if:listnum % columns > 0 ?><?cs set:col_len = col_len + #1 ?><?cs /if ?>
<table class="list_select">
<?cs loop: x = #0, col_len-1, #1 ?>
<tr>
<?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) ?>&amp;action=subscribers" title="<?cs var:html_escape(listname) ?>"><?cs call:limit_string_len(html_escape(listname),18) ?></a>
<?cs /if ?>
</td>
<?cs /loop ?>
</tr>
<?cs /loop ?>
</table>
<?cs else ?>
<p><?cs var:html_escape(Lang.Misc.NoListsAvailable) ?></p>
<?cs /if ?>
</fieldset>

View file

@ -1,28 +0,0 @@
<div id="textfiles" class="container">
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="list_text">
<input type="hidden" name="list" value="<?cs var:Data.ListName ?>">
<div class="list">
<select name="file" tabindex="1" size="25">
<?cs each:item = Data.Files ?>
<option><?cs var:item ?></option>
<?cs /each ?>
</select>
</div>
<div class="info">
<?cs var:Lang.Misc.EditTextInfo ?>
</div>
<div class="question">
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.EditFile ?>"></span>
<span class="button"><input type="submit" name="action"
value="<?cs var:Lang.Buttons.Cancel ?>"></span>
</div>
</form>
</div>

View file

@ -1,11 +1,53 @@
<?cs def:help_icon(helpname) ?>
<?cs each:item = Lang.Helper ?>
<?cs if:(name(item) == helpname) ?>
&nbsp<img src="<?cs var:HelpIconURL ?>" title="<?cs var:item ?>"/>
<?cs /if ?>
<?cs /each ?>
<?cs /def ?>
<?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])
?></label><?cs
set:available_options = available_options + option ?><?cs
else ?>unknown option (<?cs var:option ?>)<?cs /if ?><?cs
/def ?>
<?cs def:generic_icon(helptext) ?>
&nbsp<img src="<?cs var:HelpIconURL ?>" title="<?cs var:helptext ?>"/>
<?cs /def ?>
<?cs 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
?>" 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 ?>
<?cs def:warning(warntext)
?><div class="warning">
<?cs alt:warntext ?>unknown warning message (<?cs
var:Data.Warning ?>)<?cs /alt ?>
</div><?cs
/def ?>
<?cs def:error(errtext)
?><div class="error">
<?cs alt:errtext ?>unknown error message (<?cs
var:Data.Error ?>)<?cs /alt ?>
</div><?cs
/def ?>
<?cs def:success(succtext)
?><div class="success">
<?cs alt:succtext ?>unknown success message (<?cs
var:Data.Success ?>)<?cs /alt ?>
</div><?cs
/def ?>
<?cs 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 ?>

21
template/main.cs Normal file
View file

@ -0,0 +1,21 @@
<!-- $Id$ -->
<?cs include:TemplateDir + '/macros.cs' ?>
<?cs include:TemplateDir + '/header.cs' ?>
<!-- this ezmlm-web template follows: <?cs var:Data.Action ?> -->
<?cs include:TemplateDir + '/nav.cs' ?>
<div id="main_content">
<?cs if:Data.List.Name ?><div id="info_title"><?cs var:Data.List.Name ?> - <?cs
var:Data.List.Address ?></div><?cs /if ?>
<?cs if:Data.Error ?><?cs call:error(Lang.ErrorMessage[Data.Error]) ?><?cs /if ?>
<?cs if:Data.customError ?><?cs call:error(Data.customError) ?><?cs /if ?>
<?cs if:Data.Warning ?><?cs call:warning(Lang.WarningMessage[Data.Warning]) ?><?cs /if ?>
<?cs if:Data.customWarning ?><?cs call:warning(Data.customWarning) ?><?cs /if ?>
<?cs if:Data.Success ?><?cs call:success(Lang.SuccessMessage[Data.Success]) ?><?cs /if ?>
<?cs include:TemplateDir + '/' + Data.Action + '.cs' ?>
</div> <!-- end of main_content -->
<?cs include:TemplateDir + '/footer.cs' ?>

View file

@ -1,30 +1,20 @@
<div class="info">
<!-- posting moderation -->
<?cs if:Data.isPostMod ?>
<p class="<?cs if:Data.PostModPath ?>warning<?cs else ?>ok<?cs /if ?>"><?cs var:Lang.Misc.Posting ?>
<?cs if:Data.PostModPath ?>
<?cs var:Lang.Misc.PostModPathWarn ?>(<?cs var:Data.PostModPath ?>). <?cs var:SuggestEdit ?>
<?cs /if ?>
</p>
<?cs if:Data.List.PostModPath ?>
<div class="warning">
<?cs var:html_escape(Lang.Misc.PostModPathWarn) ?> (<?cs var:Data.List.PostModPath ?>).<br/><?cs var:html_escape(Lang.Misc.SuggestDefaultPath) ?>
</div>
<?cs /if ?>
<!-- subscription moderation -->
<?cs if:Data.isSubMod ?>
<p class="<?cs if:Data.SubModPath ?>warning<?cs else ?>ok<?cs /if ?>"><?cs var:Lang.Misc.Subscription ?>
<?cs if:Data.SubModPath ?>
<?cs var:Lang.Misc.SubModPathWarn ?>(<?cs var:Data.SubModPath ?>). <?cs var:SuggestEdit ?>
<?cs /if ?>
</p>
<?cs if:Data.List.SubModPath ?>
<div class="warning">
<?cs var:html_escape(Lang.Misc.SubModPathWarn) ?> (<?cs var:Data.List.SubModPath ?>).<br/><?cs var:html_escape(Lang.Misc.SuggestDefaultPath) ?>
</div>
<?cs /if ?>
<!-- remote administration -->
<?cs if:Data.isRemote ?>
<p class="<?cs if:Data.RemotePath ?>warning<?cs else ?>ok<?cs /if ?>"><?cs var:Lang.Misc.RemoteAdmin ?>
<?cs if:Data.RemotePath ?>
<?cs var:Lang.Misc.RemotePathWarn ?>(<?cs var:Data.RemotePath ?>). <?cs var:SuggestEdit ?>
<?cs /if ?>
</p>
<?cs if:Data.List.RemoteAdminPath ?>
<div class="warning">
<?cs var:html_escape(Lang.Misc.RemoteAdminPathWarn) ?> (<?cs var:Data.List.RemoteAdminPath ?>).<br/><?cs var:html_escape(Lang.Misc.SuggestDefaultPath) ?>
</div>
<?cs /if ?>
</div>

73
template/nav.cs Normal file
View file

@ -0,0 +1,73 @@
<!-- $Id$ -->
<div id="nav_bar">
<ul>
<?cs if:(subcount(Data.Lists) > 0) ?>
<li><a <?cs if:(Data.Action == "list_select") ?> class="nav_active"<?cs /if ?>
href="<?cs var:ScriptName ?>?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 ?>
<li><a <?cs if:(Data.Action == "list_create") ?> class="nav_active"<?cs /if ?>
href="<?cs var:ScriptName ?>?action=list_create_ask"
title="<?cs var:html_escape(Lang.Menue.ListCreate) ?>"><?cs var:html_escape(Lang.Menue.ListCreate) ?></a>
</li>
<?cs /if ?>
<?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) ?>&amp;action=subscribers" title="<?cs var:html_escape(Lang.Menue.Subscribers) ?>"><?cs var:html_escape(Lang.Menue.Subscribers) ?></a>
<ul>
<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) ?>&amp;action=subscribers&amp;part=allow"><?cs var:html_escape(Lang.Menue.AllowList) ?></a></li>
<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) ?>&amp;action=subscribers&amp;part=deny"><?cs var:html_escape(Lang.Menue.DenyList) ?></a></li>
<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) ?>&amp;action=subscribers&amp;part=digest"><?cs var:html_escape(Lang.Menue.DigestList) ?></a></li>
<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) ?>&amp;action=subscribers&amp;part=mod"><?cs var:html_escape(Lang.Menue.ModList) ?></a></li>
</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) ?>&amp;action=config_ask&amp;config_subset=main" title="<?cs var:html_escape(Lang.Menue.ConfigMain) ?>"><?cs var:html_escape(Lang.Menue.ConfigMain) ?></a>
<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) ?>&amp;action=config_ask&amp;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) ?>&amp;action=config_ask&amp;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) ?>&amp;action=config_ask&amp;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) ?>&amp;action=config_ask&amp;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) ?>&amp;action=config_ask&amp;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) ?>&amp;action=config_ask&amp;config_subset=all" title="<?cs var:html_escape(Lang.Menue.ConfigAll) ?>"><?cs var:html_escape(Lang.Menue.ConfigAll) ?></a></li>
</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) ?>&amp;action=textfiles" title="<?cs var:html_escape(Lang.Menue.TextFiles) ?>"><?cs var:html_escape(Lang.Menue.TextFiles) ?></a></li>
<li><a <?cs if:(Data.Action == "list_delete") ?> class="nav_active"<?cs /if ?>
href="<?cs var:ScriptName ?>?list=<?cs var:url_escape(Data.List.Name) ?>&amp;action=list_delete_ask" title="<?cs var:html_escape(Lang.Menue.ListDelete) ?>"><?cs var:html_escape(Lang.Menue.ListDelete) ?></a></li>
</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>
</ul>
<!-- end of navbar div -->
</div>

View file

@ -1,60 +0,0 @@
<?cs if:(Status == "unknown action") ?>
<!-- the chosen action is not specified -->
<div class="error">
<h1><?cs var:Data.Action ?></h1>
<h2><?cs var:Lang.Misc.UnknownAction ?></h2>
</div>
<?cs else ?>
<!-- print available lists and administrative buttons -->
<div id="main" class="container">
<form method="post" action="<?cs var:ScriptName ?>" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="state" value="select">
<?cs if:(Data.ListsCount > 0) ?>
<!-- scrollbox for available lists -->
<div class="list">
<!-- Keep selection box a resonable size - suggested by Sebastian Andersson -->
<?cs if:(Data.ListsCount > 25) ?>
<?cs set:Data.ScrollSize = 25 ?>
<?cs else ?>
<?cs set:Data.ScrollSize = Data.ListsCount ?>
<?cs /if ?>
<select name="list" tabindex="1" size="<?cs var:Data.ScrollSize ?>">
<?cs each:item = Data.Lists ?>
<option><?cs var:item ?></option>
<?cs /each ?>
</select>
</div>
<?cs /if ?>
<!-- short description -->
<div class="info">
<ul>
<?cs each:item = Lang.Misc.ListSelectDescription ?>
<li><?cs var:item ?></li>
<?cs /each ?>
</ul>
</div>
<!-- the buttons -->
<div class="add_remove">
<?cs if:(Data.Permissions.Create == 1) ?>
<!-- button "create" -->
<span class="button"><input type="submit" tabindex="2" name="action"
value="<?cs var:Lang.Buttons.Create ?>" /></span>
<?cs /if ?>
<?cs if:(Data.ListsCount > 0) ?>
<!-- buttons: "edit" and "delete" -->
<span class="button"><input type="submit" tabindex="3" name="action"
value="<?cs var:Lang.Buttons.Edit ?>" /></span>
<span class="button"><input type="submit" tabindex="4" name="action"
value="<?cs var:Lang.Buttons.Delete ?>" /></span>
<?cs /if ?>
</div>
</form>
</div>
<?cs /if ?>

135
template/subscribers.cs Normal file
View file

@ -0,0 +1,135 @@
<div class="title">
<h1>
<?cs if:(Data.List.PartType == "allow") ?> <?cs var:html_escape(Lang.Title.AllowList) ?>
<?cs elif:(Data.List.PartType == "deny") ?> <?cs var:html_escape(Lang.Title.DenyList) ?>
<?cs elif:(Data.List.PartType == "digest") ?><?cs var:html_escape(Lang.Title.DigestList) ?>
<?cs elif:(Data.List.PartType == "mod") ?> <?cs var:html_escape(Lang.Title.ModList) ?>
<?cs else ?> <?cs var:html_escape(Lang.Title.SubscriberList) ?>
<?cs /if ?>
</h1>
</div>
<div class="introduction">
<p>
<?cs if:(Data.List.PartType == "allow") ?> <?cs var:html_escape(Lang.Introduction.AllowList) ?>
<?cs elif:(Data.List.PartType == "deny") ?> <?cs var:html_escape(Lang.Introduction.DenyList) ?>
<?cs elif:(Data.List.PartType == "digest") ?><?cs var:html_escape(Lang.Introduction.DigestList) ?>
<?cs elif:(Data.List.PartType == "mod") ?> <?cs var:html_escape(Lang.Introduction.ModList) ?>
<?cs else ?> <?cs var:html_escape(Lang.Introduction.SubscriberList) ?>
<?cs /if ?>
</p>
</div>
<?cs if:Data.List.PartType == 'mod' ?>
<!-- show warnings for wrong moderation paths -->
<?cs include:TemplateDir + "modpath_info.cs" ?>
<?cs /if ?>
<?cs if:((Data.List.PartType == "digest") || (Data.List.PartType == "deny") || (Data.List.PartType == 'mod')) ?>
<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">
<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 elif:(Data.List.PartType == "deny") ?>
<li><?cs call:checkbox("k") ?></li>
<?cs elif:(Data.List.PartType == "mod") ?>
<li><?cs call:setting("7") ?></li>
<li><?cs call:setting("8") ?></li>
<?cs /if ?>
<li><!-- 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>
</form>
</fieldset>
<?cs /if ?>
<!-- check, if we should display a subscribers list -->
<?cs if:!Data.List.PartType || (Data.List.PartType == '') ||
(Data.List.PartType == 'allow') ||
(Data.List.PartType == 'mod') ||
((Data.List.PartType == 'deny') && (Data.List.Options.k == 1)) ||
((Data.List.PartType == 'digest') && (Data.List.Options.d == 1)) ?>
<fieldset class="form">
<legend>
<?cs if:(Data.List.PartType == "allow") ?> <?cs var:html_escape(Lang.Legend.MembersAllow) ?>
<?cs elif:(Data.List.PartType == "deny") ?> <?cs var:html_escape(Lang.Legend.MembersDeny) ?>
<?cs elif:(Data.List.PartType == "digest") ?><?cs var:html_escape(Lang.Legend.MembersDigest) ?>
<?cs elif:(Data.List.PartType == "mod") ?> <?cs var:html_escape(Lang.Legend.MembersMod) ?>
<?cs else ?> <?cs var:html_escape(Lang.Legend.MembersList) ?>
<?cs /if ?>
</legend>
<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">
<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 ?>" />
<?cs /if ?>
<ul>
<!-- scrollbox for list's subscribers -->
<!-- Keep selection box a reasonable size - suggested by Sebastian Andersson -->
<?cs if:subcount(Data.List.Subscribers) > 15 ?>
<?cs set:Data.ScrollSize = 15 ?>
<?cs else ?>
<?cs set:Data.ScrollSize = subcount(Data.List.Subscribers) ?>
<?cs /if ?>
<li><select name="mailaddress_del"
size="<?cs var:Data.ScrollSize ?>" multiple="multiple">
<?cs each:item = Data.List.Subscribers ?>
<option value="<?cs var:item.address ?>"><?cs var:item.address ?><?cs if:item.name ?> (<?cs var:item.name ?>)<?cs /if ?></option>
<?cs /each ?>
</select></li>
<li><?cs var:subcount(Data.List.Subscribers) ?> <?cs var:html_escape(Lang.Misc.Subscribers) ?></li>
<li><input type="hidden" name="action" value="address_del" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.DeleteAddress) ?></button></li>
</ul></form></td>
<?cs /if ?>
<td><td><form method="post" action="<?cs var:ScriptName ?>" 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 ?>
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
<?cs /if ?>
<ul>
<li><?cs var:html_escape(Lang.Misc.AddSubscriberAddress) ?>
<ul><li><input type="text" name="mailaddress_add" size="40" /></li>
</ul></li>
<?cs if:Data.Permissions.FileUpload ?>
<li><?cs var:html_escape(Lang.Misc.AddSubscriberFile) ?>
<ul><li><input type="file" name="mailaddressfile" size="20"
maxlength="200" /></li>
</ul></li>
<?cs /if ?>
<li><input type="hidden" name="action" value="address_add" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.AddAddress) ?></button></li>
</ul>
</form>
</td></tr>
</table>
</fieldset>
<?cs /if ?>

25
template/textfile_edit.cs Normal file
View file

@ -0,0 +1,25 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.FileEdit) ?> &quot;<?cs var:Data.List.File.Name ?>&quot;</h1>
</div>
<div class="introduction">
<?cs var:html_escape(Lang.Introduction.EditTextFile) ?>
</div>
<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">
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>">
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
<p><textarea name="content" rows="13"
cols="72"><?cs var:Data.List.File.Content ?></textarea></p>
<input type="hidden" name="action" value="textfile_save" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.SaveFile) ?></button>
</form>
</fieldset>
<?cs include:TemplateDir + '/help_tag_substitution.cs' ?>

39
template/textfiles.cs Normal file
View file

@ -0,0 +1,39 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.FileSelect) ?></h1>
</div>
<div class="introduction">
<?cs var:html_escape(Lang.Introduction.TextFiles) ?>
</div>
<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">
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
<ul>
<?cs if:subcount(Data.List.Files) > 0 ?>
<!-- scrollbox for list's subscribers -->
<!-- Keep selection box a reasonable size - suggested by Sebastian Andersson -->
<?cs if:subcount(Data.List.Files) > 15 ?>
<?cs set:Data.ScrollSize = 15 ?>
<?cs else ?>
<?cs set:Data.ScrollSize = subcount(Data.List.Files) ?>
<?cs /if ?>
<li><select name="file" size="<?cs var:Data.ScrollSize ?>">
<?cs each:item = Data.List.Files ?>
<option><?cs var:item ?></option>
<?cs /each ?>
</select></li>
<?cs else ?>
<li><?cs var:html_escape(Lang.Misc.NoFiles) ?></li>
<?cs /if ?>
<li><input type="hidden" name="action" value="textfile_edit" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.EditFile) ?></button></li>
</ul>
</form>
</fieldset>