ezmlm-web release:

* released source and debian file
This commit is contained in:
lars 2008-10-12 01:36:40 +00:00
parent b93f629a9c
commit db6538cda5
161 changed files with 32232 additions and 0 deletions

View file

@ -0,0 +1,23 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigAdmin) ?> </legend>
<?cs call:form_header("config_admin") ?>
<input type="hidden" name="config_subset" value="admin" />
<?cs call:show_options(UI.Options.Config.Admin) ?>
<ul><li>
<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,23 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigAll) ?> </legend>
<?cs call:form_header("config_all") ?>
<input type="hidden" name="config_subset" value="all" />
<?cs call:show_options(UI.Options.Config.Overview) ?>
<ul><li>
<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,23 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigArchive) ?> </legend>
<?cs call:form_header("config_archive") ?>
<input type="hidden" name="config_subset" value="archive" />
<?cs call:show_options(UI.Options.Config.Archive) ?>
<ul><li>
<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,23 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.GpgEzmlmOptions) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.GpgEzmlmOptions) ?></p>
</div>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.GpgEzmlmOptions) ?> </legend>
<?cs call:form_header("config_gpgezmlm") ?>
<input type="hidden" name="config_subset" value="gpgezmlm" />
<?cs call:show_options(UI.Options.Config.GpgEzmlmOptions) ?>
<ul><li>
<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,23 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigMain) ?> </legend>
<?cs call:form_header("config_main") ?>
<input type="hidden" name="config_subset" value="main" />
<?cs call:show_options(UI.Options.Config.Main) ?>
<ul><li>
<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,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- administrators may edit text files via mail -->
<?cs call:checkbox("n") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- enable remote administration -->
<?cs call:checkbox("r") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- administrators may request subscribers list -->
<?cs call:checkbox("l") ?>

View 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:html_escape(Lang.Misc.ModSubOverridesRemote) ?>)<?cs /if ?>
<?cs /if ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- configure archive access -->
<?cs call:selection_list("archive") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- block unknown users from archive -->
<?cs call:checkbox("g") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- enable archiving -->
<?cs call:checkbox("a") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- only moderators may access the archive -->
<?cs call:checkbox("b") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- remove 'no-archive' header -->
<?cs call:checkbox("i") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- use deny list -->
<?cs call:checkbox("k") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- only moderators may post -->
<?cs call:checkbox("o") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- block unknown users from archive -->
<?cs call:checkbox("g") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- only subscribers may post -->
<?cs call:checkbox("u") ?>

View file

@ -0,0 +1,9 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- charset -->
<?cs if:Config.Features.CharsetSelect ?>
<?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 ?>
<?cs /if ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- require confirmation from poster -->
<?cs call:checkbox("y") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- configure confirmation requirements -->
<?cs call:selection_checkboxes("confirmation") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- do not require confirmation for subscription -->
<?cs call:checkbox("h") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- do not require confirmation for unsubscribe -->
<?cs call:checkbox("j") ?>

View file

@ -0,0 +1,13 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- 'copylines' setting -->
<?cs if:Config.Features.CopyLines ?>
<input type="checkbox" name="copylines_enabled"
value="selected" id="copylines_enabled" <?cs
if:Data.List.CopyLines>0 ?>checked="checked"<?cs /if ?> />
<label for="copylines_enabled"><?cs
var:html_escape(Lang.Misc.CopyLinesEnabled) ?></label>
<ul><li><input type="text" name="copylines" size="10"
style="text-align:right" value="<?cs
alt:Data.List.CopyLines ?>0<?cs /alt ?>" /> <?cs
var:html_escape(Lang.Misc.CopyLinesNumber) ?></li></ul>
<?cs /if ?>

View 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.LocalPrefix)
?>"> @ <input type="text" name="inhost" size="30" value="<?cs
var:html_escape(Data.HostName) ?>"></li>

View file

@ -0,0 +1,2 @@
<label for="listname"><?cs var:html_escape(Lang.Misc.ListName) ?>:</label>
<input type="text" name="new_list" id="listname" size="25">

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- turn on digest list -->
<?cs call:checkbox("d") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- digest settings -->
<?cs call:setting("4") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- from address -->
<?cs call:setting("3") ?>

View file

@ -0,0 +1,8 @@
<?cs if:Data.List.Features.GpgKeyRing ?>
<!-- comment for the key (second part of the human readable key description) -->
<label for="gnupg_keycomment"><?cs var:html_escape(Lang.Misc.GnupgKeyComment) ?>:</label>
<input type="text" name="gnupg_keycomment" id="gnupg_keycomment" size="25"
value="Mailing list" />
<?cs /if ?>

View file

@ -0,0 +1,15 @@
<?cs if:Data.List.Features.GpgKeyRing ?>
<!-- expiration of the key (in years) -->
<label for="gnupg_keyexpires"><?cs var:html_escape(Lang.Misc.GnupgKeyExpires) ?>:</label>
<select name="gnupg_keyexpires" id="gnupg_keyexpires" size="0">
<option value="0" selected="selected"><?cs
var:html_escape(Lang.Misc.Never) ?></option>
<option value="1y">1</option>
<option value="2y">2</option>
<option value="3y">3</option>
<option value="5y">5</option>
<option value="10y">10</option>
</select>
<?cs /if ?>

View file

@ -0,0 +1,8 @@
<?cs if:Data.List.Features.GpgKeyRing ?>
<!-- name of the key (first part of the human readable key description) -->
<label for="gnupg_keyname"><?cs var:html_escape(Lang.Misc.GnupgKeyName) ?>:</label>
<input type="text" name="gnupg_keyname" id="gnupg_keyname" size="25"
value="<?cs var:html_escape(Data.List.Name) ?>" />
<?cs /if ?>

View file

@ -0,0 +1,11 @@
<?cs if:Data.List.Features.GpgKeyRing ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- length of the key (bytes) -->
<label for="gnupg_keysize"><?cs var:html_escape(Lang.Misc.GnupgKeySize) ?>:</label>
<select name="gnupg_keysize" size="1" id="gnupg_keysize">
<option>1024</option>
<option selected="selected">2048</option>
<option>4096</option>
</select>
<?cs /if ?>

View file

@ -0,0 +1,6 @@
<?cs if:Data.List.Features.GpgEzmlm ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: sign outgoing messages -->
<?cs call:checkbox("gpgezmlm_allowkeysubmission") ?>
<?cs /if ?>

View file

@ -0,0 +1,6 @@
<?cs if:Data.List.Features.GpgEzmlm ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: sign outgoing messages -->
<?cs call:checkbox("gpgezmlm_encrypttoall") ?>
<?cs /if ?>

View file

@ -0,0 +1,6 @@
<?cs if:Data.List.Features.GpgEzmlm ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: send warning without original content if no key is available -->
<?cs call:checkbox("gpgezmlm_nokeynocrypt") ?>
<?cs /if ?>

View file

@ -0,0 +1,6 @@
<?cs if:Data.List.Features.GpgEzmlm ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: sign outgoing messages -->
<?cs call:checkbox("gpgezmlm_requiresigs") ?>
<?cs /if ?>

View file

@ -0,0 +1,6 @@
<?cs if:Data.List.Features.GpgEzmlm ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: sign outgoing messages -->
<?cs call:checkbox("gpgezmlm_signmessages") ?>
<?cs /if ?>

View file

@ -0,0 +1,6 @@
<?cs if:Data.List.Features.GpgEzmlm ?>
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: sign outgoing messages -->
<?cs call:checkbox("gpgezmlm_verifiedkeyreq") ?>
<?cs /if ?>

View file

@ -0,0 +1,5 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- headeradd -->
<?cs var:html_escape(Lang.Misc.HeaderAdd) ?>:<br/>
<ul><li><textarea name="headeradd" rows="5" cols="60"><?cs
var:html_escape(Data.List.HeaderAdd) ?></textarea></li></ul>

View file

@ -0,0 +1,31 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- headerfilter -->
<?cs if:Config.Features.KeepFiles ?>
<?cs var:html_escape(Lang.Misc.HeaderFiltering) ?>:
<ul>
<li><input type="radio" name="headerfilter_action" value="remove"
id="hf_remove"<?cs if:Data.List.HeaderRemove
?> checked="checked"<?cs /if ?> /><label for="hf_remove"><?cs
var:html_escape(Lang.Misc.HeaderRemove) ?></label></li>
<li><input type="radio" name="headerfilter_action" value="keep"
id="hf_keep"<?cs if:Data.List.HeaderKeep
?> checked="checked"<?cs /if ?> /><label for="hf_keep"><?cs
var:html_escape(Lang.Misc.HeaderKeep) ?></label></li>
<li>
<textarea name="headerfilter" rows="5" cols="60"><?cs
if Data.List.HeaderRemove ?><?cs
var:html_escape(Data.List.HeaderRemove) ?><?cs else ?><?cs
var:html_escape(Data.List.HeaderKeep) ?><?cs /if ?></textarea></li>
</ul>
<?cs else ?>
<?cs var:html_escape(Lang.Misc.HeaderFiltering) ?>:
<?cs var:html_escape(Lang.Misc.HeaderRemove) ?>
<input type="hidden" name="headerfilter_action" value="remove" />
<ul>
<li>
<textarea name="headerfilter" rows="5" cols="60"><?cs
if Data.List.HeaderRemove ?><?cs
var:html_escape(Data.List.HeaderRemove) ?><?cs else ?><?cs
var:html_escape(Data.List.HeaderKeep) ?><?cs /if ?></textarea></li>
</ul>
<?cs /if ?>

View file

@ -0,0 +1,25 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- list language -->
<?cs if:Config.Features.LanguageSelect ?>
<?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 ?>
<?cs /if ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- process mailman-style requests -->
<?cs call:checkbox("q") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- set main list name -->
<?cs call:setting("0") ?>

View file

@ -0,0 +1,35 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<?cs if:Config.Features.KeepFiles ?>
<?cs var:html_escape(Lang.Misc.MimeFiltering) ?>:
<ul>
<li><input type="radio" name="mimefilter_action" value="remove"
id="mf_remove"<?cs if:Data.List.MimeRemove
?> checked="checked"<?cs /if ?> /><label for="mf_remove"><?cs
var:html_escape(Lang.Misc.MimeRemove) ?></label></li>
<li><input type="radio" name="mimefilter_action" value="keep"
id="mf_keep"<?cs if:Data.List.MimeKeep
?> checked="checked"<?cs /if ?> /><label for="mf_keep"><?cs
var:html_escape(Lang.Misc.MimeKeep) ?></label></li>
<li>
<textarea name="mimefilter" rows="5" cols="60"><?cs
if Data.List.MimeRemove ?><?cs var:html_escape(Data.List.MimeRemove)
?><?cs else ?><?cs var:html_escape(Data.List.MimeKeep)
?><?cs /if ?></textarea></li>
<li>(<a href="<?cs call:link('action','show_mime_examples','','','','')
?>" target="_blank"><?cs var:html_escape(Lang.Misc.MimeTypeExamples)
?></a>)</li>
</ul>
<?cs else ?>
<?cs var:html_escape(Lang.Misc.MimeFiltering) ?>:
<?cs var:html_escape(Lang.Misc.MimeRemove) ?>
<input type="hidden" name="mimefilter_action" value="remove" />
<ul><li>
<textarea name="mimefilter" rows="5" cols="60"><?cs
if Data.List.MimeRemove ?><?cs var:html_escape(Data.List.MimeRemove)
?><?cs else ?><?cs var:html_escape(Data.List.MimeKeep)
?><?cs /if ?></textarea></li>
</ul>
<?cs /if ?>
<?cs # uncomment the following to enable the 'reset' feature
but that would mess up the interface, right? ?>
<?cs # call:checkbox("x") ?>

View file

@ -0,0 +1,7 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<?cs var:html_escape(Lang.Misc.MimeReject) ?>:
<ul>
<li><textarea name="mimereject" rows="4" cols="60"><?cs
var:html_escape(Data.List.MimeReject) ?></textarea>
</li>
</ul>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- posted messages are moderated -->
<?cs call:checkbox("m") ?>

View file

@ -0,0 +1,5 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<?cs if:Data.List.Options.m ?>
<!-- messsage moderator path -->
<?cs call:setting("7") ?>
<?cs /if ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- moderate subscription -->
<?cs call:checkbox("s") ?>

View file

@ -0,0 +1,5 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<?cs if:Data.List.Options.s ?>
<!-- custom path to subscription moderators -->
<?cs call:setting("8") ?>
<?cs /if ?>

View file

@ -0,0 +1,10 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- message size limit -->
<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>

View file

@ -0,0 +1,10 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- message size limit -->
<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>

View file

@ -0,0 +1,4 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<?cs if:Data.Modules.mySQL ?>
<!-- mysql database -->
<?cs call:setting("6") ?><?cs /if ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- list owner address -->
<?cs call:setting("5") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- posting rules -->
<?cs call:selection_list("posting") ?>

View file

@ -0,0 +1,6 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- subject prefix -->
<?cs call:checkbox("f") ?>
<ul><li><input type="text" name="prefix" value="<?cs
var:html_escape(Data.List.Prefix) ?>" size="60" />
</li></ul>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- public subsccription and archive -->
<?cs call:checkbox("p") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- Gnupg: sign outgoing messages -->
<?cs call:checkbox("special_replytoself") ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- subscription rules -->
<?cs call:selection_list("subscribe") ?>

View file

@ -0,0 +1,9 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- trailing text -->
<?cs call:checkbox("t") ?>
<?cs if:(Data.List.Options.t == 1) ?>
<!-- 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>
</ul><?cs /if ?>

View file

@ -0,0 +1,3 @@
<!-- REMOVE --><?cs include:TemplateDir + '/macros.cs' ?>
<!-- remove ezmlm-warn -->
<?cs call:checkbox("w") ?>

View file

@ -0,0 +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 if:Data.List.WebUsers
?><?cs var:html_escape(Data.List.WebUsers) ?><?cs
else ?><?cs
var:html_escape(Data.WebUser.UserName)
?><?cs /if ?>" size="40" /><br/>
</li></ul>

View file

@ -0,0 +1,24 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigPosting) ?> </legend>
<?cs call:form_header("config_posting") ?>
<input type="hidden" name="config_subset" value="posting" />
<?cs call:show_options(UI.Options.Config.Posting) ?>
<ul><li>
<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,26 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigProcess) ?> </legend>
<?cs call:form_header("config_processing") ?>
<input type="hidden" name="config_subset" value="processing" />
<?cs call:show_options(UI.Options.Config.Processing) ?>
<ul><li>
<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,23 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ConfigSub) ?> </legend>
<?cs call:form_header("config_subscription") ?>
<input type="hidden" name="config_subset" value="subscription" />
<?cs call:show_options(UI.Options.Config.Subscription) ?>
<ul><li>
<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,20 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.DomainSelect) ?></h1>
</div>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.AvailableDomains) ?></legend>
<?cs if:subcount(Data.Domains) > 0 ?>
<ul>
<?cs each:domain = Data.Domains
?><li><a href="<?cs call:link('domain',name(domain),'','','','')
?>"><?cs var:html_escape(domain) ?></a></li>
<?cs /each ?>
</ul>
<?cs else ?>
<p><?cs var:html_escape(Lang.Misc.NoDomainsAvailable) ?></p>
<?cs /if ?>
</fieldset>

View file

@ -0,0 +1,11 @@
<div id="footer">
<a href="https://systemausfall.org/toolforge/ezmlm-web">ezmlm-web</a>
(v<?cs var:html_escape(Config.Version.ezmlm_web) ?>)
- <?cs var:html_escape(Lang.Misc.FooterText) ?>
<a href="http://www.ezmlm.org/" target="_blank">ezmlm</a>
<br />
</div>
</body>
</html>

View file

@ -0,0 +1,24 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.GnupgGenerateKey) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.GnupgGenerateKey) ?></p>
</div>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.GnupgGenerateKey) ?> </legend>
<?cs call:form_header("gnupg_generate_key") ?>
<input type="hidden" name="gnupg_subset" value="generate_key" />
<?cs call:show_options(UI.Options.GenerateKey) ?>
<ul><li>
<input type="hidden" name="action" value="gnupg_do" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.GnupgGenerateKey) ?></button></li></ul>
</form>
</fieldset>

View file

@ -0,0 +1,26 @@
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.GnupgKeyImport) ?> </legend>
<?cs call:form_header_upload("gnupg_key_upload") ?>
<input type="hidden" name="gnupg_subset" value="<?cs
if:Data.Action == 'gnupg_public' ?>public<?cs
else ?>secret<?cs /if ?>" />
<ul>
<li><?cs var:html_escape(Lang.Misc.GnupgImportKey) ?>
<ul><li><input type="file" name="gnupg_key_file" size="50"
maxlength="250" /></li>
</ul>
</li>
<li>
<input type="hidden" name="action" value="gnupg_do" />
<button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.GnupgImportKey) ?></button>
</li>
</ul>
</form>
</fieldset>

View file

@ -0,0 +1,52 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.GnupgPublic) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.GnupgPublic) ?></p>
</div>
<?cs include:TemplateDir + '/gnupg_import.cs' ?>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.GnupgPublicKeys) ?> </legend>
<?cs if:subcount(Data.List.gnupg_keys.public) > 0 ?>
<?cs call:form_header("gnupg_public_keys") ?>
<ul>
<li><table class="gnupg_keys">
<?cs each:key = Data.List.gnupg_keys.public
?><tr><td><input type="checkbox" name="gnupg_key_<?cs var:key.id ?>"
id="gnupg_key_<?cs var:key.id ?>" /></td>
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
var:html_escape(key.name) ?></label></td>
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
var:html_escape(key.email) ?></label></td>
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
if:key.expires ?><?cs var:html_escape(key.expires) ?><?cs
else ?><?cs var:html_escape(Lang.Misc.Never) ?><?cs /if
?></label></td>
<td><a href="<?cs call:link("action", "gnupg_export",
"list", Data.List.Name,
"gnupg_keyid", key.id) ?>"
title="<?cs var:html_escape(Lang.Buttons.GnupgExportKey)
?>"><?cs var:html_escape(Lang.Buttons.GnupgExportKey)
?></a></td>
</tr>
<?cs /each ?>
</table></li>
<li><input type="hidden" name="action" value="gnupg_do" />
<input type="hidden" name="gnupg_subset" value="public" />
<button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.DeletePublicKey) ?></button></li>
</ul>
</form>
<?cs else ?>
<p><?cs var:html_escape(Lang.Misc.GnupgNoPublicKeys) ?></p>
<?cs /if ?>
</fieldset>

View file

@ -0,0 +1,53 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.GnupgSecret) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.GnupgSecret) ?></p>
</div>
<?cs include:TemplateDir + '/gnupg_import.cs' ?>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.GnupgSecretKeys) ?> </legend>
<?cs if:subcount(Data.List.gnupg_keys.secret) > 0 ?>
<?cs call:form_header("gnupg_secret_keys") ?>
<ul>
<li><table class="gnupg_keys">
<?cs each:key = Data.List.gnupg_keys.secret
?><tr><td><input type="checkbox" name="gnupg_key_<?cs var:key.id ?>"
id="gnupg_key_<?cs var:key.id ?>" /></td>
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
var:html_escape(key.name) ?></label></td>
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
var:html_escape(key.email) ?></label></td>
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
if:key.expires ?><?cs var:html_escape(key.expires) ?><?cs
else ?><?cs var:html_escape(Lang.Misc.Never) ?><?cs /if
?></label></td>
<td><a href="<?cs call:link("action", "gnupg_export",
"list", Data.List.Name,
"gnupg_keyid", key.id) ?>"
title="<?cs var:html_escape(Lang.Buttons.GnupgExportKey)
?>"><?cs var:html_escape(Lang.Buttons.GnupgExportKey)
?></a></td>
</tr>
<?cs /each ?>
</table></li>
<li>
<input type="hidden" name="gnupg_subset" value="secret" />
<input type="hidden" name="action" value="gnupg_do" />
<button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.DeleteSecretKey) ?></button></li>
</ul>
</form>
<?cs else ?>
<p><?cs var:html_escape(Lang.Misc.GnupgNoSecretKeys) ?></p>
<?cs /if ?>
</fieldset>

View file

@ -0,0 +1,26 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.GpgEzmlmConvert) ?></h1>
</div>
<div class="introduction">
<p><?cs var:html_escape(Lang.Introduction.GpgEzmlmConvert) ?></p>
</div>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.GpgEzmlmConvert) ?> </legend>
<?cs call:form_header("gpgezmlm_convert") ?>
<ul><li>
<?cs if:Data.List.Features.GpgEzmlm
?><button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.GpgEzmlmConvertToPlain) ?></button>
<input type="hidden" name="action" value="gpgezmlm_convert_disable" /><?cs
else
?><button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.GpgEzmlmConvertToEncrypted) ?></button>
<input type="hidden" name="action" value="gpgezmlm_convert_enable" /><?cs
/if ?>
</li></ul>
</form>
</fieldset>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<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:html_escape(Language) ?>" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Author" content="devel[at]sumpfralle.de" />
<meta http-equiv="expire" content="-1d" />
<?cs each: item = Stylesheet
?><link rel="stylesheet" type="text/css" href="<?cs var:item ?>" /><?cs
/each ?>
</head>
<body>
<table id="top"><tr>
<td id="title">
<h1>ezmlm-web</h1>
<?cs if:Config.PageTitle
?><p><?cs var:Config.PageTitle ?></p><?cs /if ?>
</td>
<td id="perm_nav">
<?cs if:subcount(Config.PageLinks) > 0 ?><p><?cs
loop: x = #0, subcount(Config.PageLinks)-1, #1
?><?cs if:x > #0 ?> | <?cs /if
?><a href="<?cs var:html_escape(Config.PageLinks[x].url)
?>"><?cs var:html_escape(Config.PageLinks[x].name)
?></a>
<?cs /loop ?></p><?cs /if ?>
<?cs if:UI.Top.Language || UI.Top.Interface ?>
<?cs include: TemplateDir + '/interface_select.cs' ?>
<?cs /if ?>
</td>
</tr></table>

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

@ -0,0 +1,40 @@
<!-- allows the user to change the interface style and the language-->
<?cs if:((subcount(Config.UI.Interfaces) > 0) && UI.Top.Interface)
|| ((subcount(Config.UI.Languages) > 0) && UI.Top.Language) ?>
<?cs call:form_header_ignore("select_interface", "template", "web_lang", "")
?><?cs if:Data.List.Name ?><input type="hidden" name="action"
value="subscribers" /><?cs /if
?><?cs if:subcount(Config.UI.Languages) > 1 ?>
<font class="no_link"><?cs
var:html_escape(Lang.Menue.Language) ?>:</font>
<select name="web_lang" size="0">
<?cs each: tlang = Config.UI.Languages
?><option value="<?cs var:name(tlang) ?>"<?cs
if:name(tlang) == Config.UI.LinkAttrs.web_lang
?> selected="selected"<?cs /if?>><?cs
var:html_escape(tlang) ?></option>
<?cs /each ?></select><?cs
else ?>
<input type="hidden" name="web_lang" value="<?cs
var:Config.UI.LinkAttrs.web_lang ?>" /><?cs /if
?><?cs if:subcount(Config.UI.Interfaces) > 1 ?>
<font class="no_link"><?cs
var:html_escape(Lang.Menue.Interface) ?>:</font>
<select name="template" size="0">
<?cs each: ttemp = Config.UI.Interfaces
?><option value="<?cs var:name(ttemp) ?>"<?cs
if:name(ttemp) == Config.UI.LinkAttrs.template
?> selected="selected"<?cs /if?>><?cs
var:html_escape(Lang.Misc.Interfaces[ttemp]) ?></option>
<?cs /each ?></select><?cs
else ?>
<input type="hidden" name="template" value="<?cs
var:Config.UI.LinkAttrs.template ?>" /><?cs /if
?><button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.InterfaceSet) ?></button>
</form>
<?cs /if ?>

View file

@ -0,0 +1,19 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.ListCreate) ?></h1>
</div>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.ListCreate) ?> </legend>
<?cs call:form_header("list_create") ?>
<?cs call:show_options(UI.Options.Create) ?>
<ul><li>
<input type="hidden" name="action" value="list_create_do" />
<button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.Create) ?></button></li></ul>
</form>
</fieldset>

View file

@ -0,0 +1,22 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.ListDelete) ?> </legend>
<?cs call:form_header("delete_list_confirm") ?>
<ul>
<li><?cs var:html_escape(Lang.Misc.ConfirmDelete) ?></li>
<li><input type="hidden" name="action" value="list_delete_do" />
<button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.ConfirmDeletion) ?></button>
</li>
</ul>
</form>
</fieldset>

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 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 ?>
</tr>
<?cs /loop ?>
</table>
<?cs else ?>
<p><?cs var:html_escape(Lang.Misc.NoListsAvailable) ?></p>
<?cs /if ?>
</fieldset>

View file

@ -0,0 +1,191 @@
<?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>
<input type="hidden" name="available_option_<?cs
var:option ?>" value="true" /><?cs
else ?>unknown option (<?cs var:option ?>)<?cs /if ?><?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>
<input type="hidden" name="available_setting_<?cs
var:setting ?>" value="true" /><?cs
else ?>unknown setting (<?cs var:setting ?>)<?cs /if ?><?cs
/def ?><?cs
def:warning(warntext)
?><div class="warning"><?cs alt:html_escape(warntext) ?>unknown warning message (<?cs
var:html_escape(Data.Warning) ?>)<?cs /alt ?></div><?cs
/def ?><?cs
def:error(errtext)
?><div class="error">
<?cs alt:html_escape(errtext) ?>unknown error message (<?cs
var:html_escape(Data.Error) ?>)<?cs /alt ?></div><?cs
/def ?><?cs
def:success(succtext)
?><div class="success">
<?cs alt:html_escape(succtext) ?>unknown success message (<?cs
var:html_escape(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 ?><?cs
def:show_one_option(optname)
?><?cs set:blacklist_found = 0 ?><?cs
each:black_opt = Data.List.OptionsBlackList
?><?cs if:black_opt == optname ?><?cs set:blacklist_found = 1 ?><?cs
/if ?><?cs
/each ?><?cs
if:blacklist_found == 0 ?><?cs
linclude:TemplateDir + '/config_options/' + optname + '.cs' ?><?cs
/if ?><?cs
/def ?><?cs
def:show_options(element)
?><?cs if:subcount(element) == 0 ?><li><?cs
call:show_one_option(element) ?></li><?cs
else ?><?cs if:element["Self"] ?><li><?cs
call:show_one_option(element["Self"]) ?><?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[url_escape(name(attrs))] = url_escape(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
?>&amp;<?cs /if
?><?cs var:url_escape(name(attrs)) ?>=<?cs var:url_escape(attrs)
?><?cs /if
?><?cs /each
?><?cs /if ?><?cs
/def ?><?cs
def:form_header_generic(form_name, enctype, ignore1, ignore2, ignore3)
?><?cs # somehow perl's CGI has problems to evaluate the querystring of a
form action - thus we have to use hidden input fields instead
?><form accept-charset="utf-8" name="<?cs var:html_escape(form_name)
?>" method="post" action="<?cs var:ScriptName
?>" enctype="<?cs var:enctype ?>">
<?cs each:attr = Config.UI.LinkAttrs ?><?cs
if:(name(attr) != ignore1) && (name(attr) != ignore2)
&& (name(attr) != ignore3) ?><input type="hidden" name="<?cs
var:html_escape(name(attr)) ?>" value="<?cs
var:html_escape(attr) ?>" /><?cs /if ?>
<?cs /each ?><?cs
if:Data.List.Name ?><input type="hidden" name="list" value="<?cs
var:html_escape(Data.List.Name) ?>" /><?cs /if ?><?cs
/def ?><?cs
def:form_header(form_name)
?><?cs call:form_header_generic(form_name,
"application/x-www-form-urlencoded", '', '', '') ?><?cs
/def ?><?cs
def:form_header_ignore(form_name, ignore1, ignore2, ignore3)
?><?cs call:form_header_generic(form_name,
"application/x-www-form-urlencoded", ignore1, ignore2, ignore3)
?><?cs /def ?><?cs
def:form_header_upload(form_name)
?><?cs call:form_header_generic(form_name, "multipart/form-data",
'', '', '') ?><?cs
/def ?><?cs
def:check_active_selection(input)
?><?cs set:selection=input
?><?cs set:match_ok = 1 ?><?cs
set:slen = string.length(selection) ?><?cs
loop: sindex = #0, slen-1, #1 ?><?cs
set:selection_char = string.slice(selection, sindex, sindex+1) ?><?cs
if:(Data.List.Options[selection_char] != "1") ?><?cs
set:match_ok = 0 ?><?cs /if ?><?cs
/loop ?><?cs if:match_ok == 1 ?> checked="checked" <?cs /if ?><?cs
/def ?><?cs
def:selection_list(sel_name)
?><?cs var:html_escape(Lang.Selections[sel_name])
?>:<br/>
<ul><?cs each:item = Lang.Selections[sel_name] ?>
<li><input type="radio" name="selection_<?cs var:sel_name
?>" value="<?cs var:name(item) ?>" id="selection_<?cs
var:sel_name + '_' + name(item) ?>" <?cs
call:check_active_selection(name(item)) ?> />
<label for="selection_<?csvar:sel_name + '_' + name(item)
?>"><?cs var:html_escape(item) ?></label></li><?cs /each ?>
</ul>
<?cs /def ?><?cs
def:selection_checkboxes(sel_name)
?><?cs var:html_escape(Lang.Selections[sel_name]) ?>:
<ul><?cs each:item = Lang.Selections[sel_name] ?>
<li><input type="checkbox" value="enabled" name="option_<?cs
var:name(item) ?>" id="selection_<?cs
var:sel_name + '_' + name(item) ?>" <?cs
call:check_active_selection(name(item)) ?> />
<input type="hidden" name="available_option_<?cs
var:name(item) ?>" value="enabled" />
<label for="selection_<?cs var:sel_name + '_' + name(item)
?>"><?cs var:html_escape(item) ?></label></li>
<?cs /each ?>
</ul>
<?cs /def ?>

View file

@ -0,0 +1,24 @@
<!-- $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
if:Data.CurrentDomain ?><?cs
var:html_escape(Data.CurrentDomain.Description) ?> - <?cs /if
?><?cs var:html_escape(Data.List.Name) ?> - <?cs
var:html_escape(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

@ -0,0 +1,83 @@
application/excel
application/rtf
application/msword
application/ms-tnef
text/html
text/rtf
text/enriched
text/x-vcard
application/activemessage
application/andrew-inset
application/applefile
application/atomicmail
application/dca-rft
application/dec-dx
application/mac-binhex40
application/mac-compactpro
application/macwriteii
application/news-message-id
application/news-transmission
application/octet-stream
application/oda
application/pdf
application/postscript
application/powerpoint
application/remote-printing
application/slate
application/wita
application/wordperfect5.1
application/x-bcpio
application/x-cdlink
application/x-compress
application/x-cpio
application/x-csh
application/x-director
application/x-dvi
application/x-hdf
application/x-httpd-cgi
application/x-koan
application/x-latex
application/x-mif
application/x-netcdf
application/x-stuffit
application/x-sv4cpio
application/x-sv4crc
application/x-tar
application/x-tcl
application/x-tex
application/x-texinfo
application/x-troff
application/x-troff-man
application/x-troff-me
application/x-troff-ms
application/x-ustar
application/x-wais-source
audio/basic
audio/mpeg
audio/x-aiff
audio/x-pn-realaudio
audio/x-pn-realaudio
audio/x-pn-realaudio-plugin
audio/x-realaudio
audio/x-wav
image/gif
image/ief
image/jpeg
image/png
image/tiff
image/x-cmu-raster
image/x-portable-anymap
image/x-portable-bitmap
image/x-portable-graymap
image/x-portable-pixmap
image/x-rgb
image/x-xbitmap
image/x-xpixmap
image/x-xwindowdump
text/x-sgml
video/mpeg
video/quicktime
video/x-msvideo
video/x-sgi-movie
x-conference/x-cooltalk
x-world/x-vrml

View file

@ -0,0 +1,20 @@
<!-- posting moderation -->
<?cs if:Data.List.hasCustomizedPostModPath ?>
<div class="warning">
<?cs var:html_escape(Lang.Misc.PostModPathWarn) ?> (<?cs var:Data.List.Settings.7.value ?>).<br/><?cs var:html_escape(Lang.Misc.SuggestDefaultPath) ?>
</div>
<?cs /if ?>
<!-- subscription moderation -->
<?cs if:Data.List.hasCustomizedSubModPath ?>
<div class="warning">
<?cs var:html_escape(Lang.Misc.SubModPathWarn) ?> (<?cs var:Data.List.Settings.8.value ?>).<br/><?cs var:html_escape(Lang.Misc.SuggestDefaultPath) ?>
</div>
<?cs /if ?>
<!-- remote administration -->
<?cs if:Data.List.hasCustomizedAdminPath ?>
<div class="warning">
<?cs var:html_escape(Lang.Misc.RemoteAdminPathWarn) ?> (<?cs var:Data.List.Settings.9.value ?>).<br/><?cs var:html_escape(Lang.Misc.SuggestDefaultPath) ?>
</div>
<?cs /if ?>

View file

@ -0,0 +1,202 @@
<!-- $Id$ -->
<div id="nav_bar">
<ul>
<?cs if:(subcount(Data.Domains) > 0) && (UI.Navigation.DomainSelect == 1) ?>
<li><a <?cs if:(Data.Action == "domain_select") ?> class="nav_active"<?cs /if ?>
href="<?cs call:link('action','domain_select','','','','') ?>"
title="<?cs var:html_escape(Lang.Menue.DomainSelect) ?>"><?cs
var:html_escape(Lang.Menue.DomainSelect) ?></a>
</li>
<?cs /if ?>
<?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 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 && (UI.Navigation.ListCreate == 1) ?>
<li><a <?cs if:(Data.Action == "list_create") ?> class="nav_active"<?cs /if ?>
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 ?>
<?cs if:((subcount(Data.Lists) > 0) && (UI.Navigation.ListSelect == 1))
|| (Data.Permissions.Create && (UI.Navigation.ListCreate == 1))
|| ((subcount(Data.Domains) > 0) && (UI.Navigation.DomainSelect == 1)) ?>
<li><hr/></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>
<?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>
<?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 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 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 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 call:link("list",Data.List.Name,"action","subscribers",
"part","mod") ?>"><?cs
var:html_escape(Lang.Menue.ModList) ?></a></li><?cs /if ?>
</ul>
</li>
<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>
<?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.GpgEzmlmOptions == 1) &&
Data.List.Features.GpgEzmlm
?><li><a <?cs if:(Data.Action == "config_gpgezmlm")
?> class="nav_active"<?cs /if ?>
href="<?cs call:link("list",Data.List.Name,"action","config_ask",
"config_subset","gpgezmlm") ?>"
title="<?cs var:html_escape(Lang.Menue.GpgEzmlmOptions) ?>"><?cs
var:html_escape(Lang.Menue.GpgEzmlmOptions) ?></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>
<?cs if:(subcount(UI.Navigation.Gnupg) > 0) && (Data.List.Features.GpgKeyRing)
?><li><font class="no_link"><?cs var:html_escape(Lang.Menue.Gnupg)
?></font>
<ul>
<?cs if:UI.Navigation.Gnupg.PublicKeys == 1
?><li><a <?cs if:(Data.Action == "gnupg_public")
?> class="nav_active"<?cs /if ?>
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
"gnupg_subset","public") ?>"
title="<?cs var:html_escape(Lang.Menue.GnupgPublicKeys) ?>"><?cs
var:html_escape(Lang.Menue.GnupgPublicKeys) ?></a></li><?cs /if ?>
<?cs if:UI.Navigation.Gnupg.SecretKeys == 1
?><li><a <?cs if:(Data.Action == "gnupg_secret")
?> class="nav_active"<?cs /if ?>
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
"gnupg_subset","secret") ?>"
title="<?cs var:html_escape(Lang.Menue.GnupgSecretKeys) ?>"><?cs
var:html_escape(Lang.Menue.GnupgSecretKeys) ?></a></li><?cs /if ?>
<?cs if:UI.Navigation.Gnupg.GenerateKey == 1
?><li><a <?cs if:(Data.Action == "gnupg_generate_key")
?> class="nav_active"<?cs /if ?>
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
"gnupg_subset","generate_key") ?>"
title="<?cs var:html_escape(Lang.Menue.GnupgGenerateKey) ?>"><?cs
var:html_escape(Lang.Menue.GnupgGenerateKey) ?></a></li><?cs /if ?>
</ul></li><?cs /if ?>
<?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 ?>
<?cs if:(UI.Navigation.GpgEzmlmConvert == 1) && Config.Features.GpgEzmlm
?><li><a <?cs if:(Data.Action == "gpgezmlm_convert")
?> class="nav_active"<?cs /if ?>
href="<?cs call:link("list",Data.List.Name,"action","gpgezmlm_convert_ask","","") ?>"
title="<?cs var:html_escape(Lang.Menue.GpgEzmlmConvert) ?>"><?cs
var:html_escape(Lang.Menue.GpgEzmlmConvert) ?></a></li><?cs /if ?>
<?cs if:UI.Navigation.SubscribeLog == 1
?><li><a <?cs if:(Data.Action == "show_subscription_log")
?> class="nav_active"<?cs /if ?>
href="<?cs call:link("list",Data.List.Name,"action","subscribe_log","","") ?>"
title="<?cs var:html_escape(Lang.Menue.SubscribeLog) ?>"><?cs
var:html_escape(Lang.Menue.SubscribeLog) ?></a></li><?cs /if ?>
<?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>
<li><hr/></li>
<?cs /if ?>
<?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>
<!-- end of navbar div -->
</div>

View file

@ -0,0 +1,42 @@
<div class="title">
<h1><?cs var:html_escape(Lang.Title.SubscribeLog) ?></h1>
</div>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.SubscribeLog) ?> </legend>
<?cs if:subcount(Data.List.SubscribeLog) > 0 ?>
<table class="subscribe_log">
<tr>
<th><?cs var:html_escape(Lang.Misc.MailAddress) ?></th>
<th><?cs var:html_escape(Lang.Misc.SubscribeAction) ?></th>
<th><?cs var:html_escape(Lang.Misc.SubscribeActionDetails) ?></th>
<th><?cs var:html_escape(Lang.Misc.Date) ?></th>
</tr>
<?cs loop:x = subcount(Data.List.SubscribeLog)-1, #0, -1 ?><?cs
# we print the lines backward ?>
<tr>
<td><?cs var:html_escape(Data.List.SubscribeLog[x].address) ?></td>
<td><?cs if:Data.List.SubscribeLog[x].action == '+' ?><?cs
var:html_escape(Lang.Misc.SubscribeActions.add) ?><?cs
elif:Data.List.SubscribeLog[x].action == '-' ?><?cs
var:html_escape(Lang.Misc.SubscribeActions.remove) ?><?cs
else ?><?cs var:html_escape(Lang.Misc.SubscribeActions.unknown)
?><?cs /if ?></td>
<td><?cs if:Data.List.SubscribeLog[x].details == 'manual' ?><?cs
var:html_escape(Lang.Misc.SubscribeActions.manual) ?><?cs
elif:Data.List.SubscribeLog[x].details == 'probe' ?><?cs
var:html_escape(Lang.Misc.SubscribeActions.probe) ?><?cs
elif:Data.List.SubscribeLog[x].details == '' ?><?cs
var:html_escape(Lang.Misc.SubscribeActions.auto) ?><?cs
else ?><?cs var:html_escape(Lang.Misc.SubscribeActions.unknown)
?><?cs /if ?></td>
<td><?cs var:html_escape(Data.List.SubscribeLog[x].date) ?></td>
</tr>
<?cs /loop ?>
</table>
<?cs else ?>
<p><?cs var:html_escape(Lang.WarningMessage.EmptyList) ?></p>
<?cs /if ?>
</fieldset>

View file

@ -0,0 +1,140 @@
<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")
&& (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>
<legend><?cs var:html_escape(Lang.Legend.RelevantOptions) ?> </legend>
<?cs call:form_header("config_subscription") ?>
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
<?cs if:(Data.List.PartType == "digest") ?>
<?cs call:show_options(UI.Options.Subscribers.Digest) ?>
<?cs elif:(Data.List.PartType == "deny") ?>
<?cs call:show_options(UI.Options.Subscribers.Deny) ?>
<?cs elif:(Data.List.PartType == "mod") ?>
<?cs call:show_options(UI.Options.Subscribers.Moderators) ?>
<?cs /if ?>
<input type="hidden" name="config_subset" value="RESERVED-subscribers" />
<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>
<?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>
<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><?cs call:form_header("remove_subscriber") ?>
<?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>
<?cs call:form_header("download_subscribers") ?>
<ul><li>
<input type="hidden" name="action" value="download_subscribers" />
<?cs if:Data.List.PartType ?>
<input type="hidden" name="part" value="<?cs
var:Data.List.PartType ?>" /><?cs /if ?>
<button type="submit" name="send" value="do"><?cs
var:html_escape(Lang.Buttons.DownloadSubscribersList)
?></button></li>
</ul></form>
</td>
<?cs /if ?>
<td><?cs call:form_header_upload("upload_subscribers") ?>
<?cs if:Data.List.PartType ?>
<input type="hidden" name="part" value="<?cs var:Data.List.PartType ?>" />
<?cs /if ?>
<fieldset>
<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 ?>
</ul>
</fieldset>
<input type="hidden" name="action" value="address_add" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.AddAddress) ?></button>
</form></td></tr>
</table>
</fieldset>
<?cs /if ?>

View file

@ -0,0 +1,43 @@
<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>
<!-- reset text file -->
<?cs if:(Data.areDefaultTextsAvailable == 1) && (Data.List.File.isDefault == 0) ?>
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.TextFileReset) ?> </legend>
<div class="introduction">
<?cs var:html_escape(Lang.Introduction.ResetTextFile) ?>
</div>
<?cs call:form_header("textfile_reset") ?>
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
<input type="hidden" name="action" value="textfile_reset" />
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.ResetFile) ?></button>
</form>
</fieldset>
<?cs /if ?>
<!-- edit text file -->
<fieldset>
<legend><?cs var:html_escape(Lang.Legend.TextFileEdit) ?> </legend>
<?cs call:form_header("textfile_reset") ?>
<input type="hidden" name="file" value="<?cs var:Data.List.File.Name ?>">
<p><textarea name="content" rows="13"
cols="72"><?cs var:html_escape(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' ?>

View file

@ -0,0 +1,61 @@
<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>
<legend><?cs var:html_escape(Lang.Legend.TextFiles) ?> </legend>
<?cs call:form_header("select_textfile") ?>
<ul>
<?cs if:subcount(Data.List.CustomizedFiles) +
subcount(Data.List.DefaultFiles) > 0 ?>
<!-- scrollbox for list's subscribers -->
<!-- Keep selection box a reasonable size - suggested by Sebastian Andersson -->
<?cs if:subcount(Data.List.CustomizedFiles) +
subcount(Data.List.DefaultFiles) > 15 ?>
<?cs set:Data.ScrollSize = 15 ?>
<?cs else ?>
<?cs set:Data.ScrollSize = subcount(Data.List.CustomizedFiles) +
subcount(Data.List.DefaultFiles) ?>
<?cs /if ?>
<li><select name="file" size="<?cs var:Data.ScrollSize ?>" style="padding-right:10px">
<?cs if:subcount(Data.List.CustomizedFiles) > 0 ?>
<!-- no optgroup if there is no alternative optgroup -->
<?cs if:subcount(Data.List.DefaultFiles) > 0 ?>
<optgroup label="<?cs var:html_escape(Lang.Misc.CustomizedFiles) ?>">
<?cs /if ?>
<?cs each:item = Data.List.CustomizedFiles ?>
<option><?cs var:item ?></option>
<?cs /each ?>
<?cs if:subcount(Data.List.DefaultFiles) > 0 ?>
</optgroup>
<?cs /if ?>
<?cs /if ?>
<?cs if:subcount(Data.List.DefaultFiles) > 0 ?>
<!-- no optgroup if there is no alternative optgroup -->
<?cs if:subcount(Data.List.CustomizedFiles) > 0 ?>
<optgroup label="<?cs var:html_escape(Lang.Misc.DefaultFiles) ?>">
<?cs /if ?>
<?cs each:item = Data.List.DefaultFiles ?>
<option><?cs var:item ?></option>
<?cs /each ?>
<?cs if:subcount(Data.List.CustomizedFiles) > 0 ?>
</optgroup>
<?cs /if ?>
<?cs /if ?>
</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>

View file

@ -0,0 +1,78 @@
UI {
Top {
Language = 1
Interface = 1
}
Navigation {
DomainSelect = 1
ListSelect = 1
ListCreate = 1
Subscribers {
Subscribers = 1
Allow = 1
Moderators = 1
}
Config {
Main = 1
Processing = 1
}
Gnupg {
PublicKeys = 1
SecretKeys = 1
GenerateKey = 1
}
TextEdit = 1
ListDelete = 1
SubscribeLog = 1
GpgEzmlmConvert = 1
Help = 1
}
Options {
Create {
Listname = create_listname
Listaddress = create_listaddress
Listlanguage = lang_select
Webuser = webusers
}
Subscribers {
Subscribers = {}
}
GenerateKey {
KeyName = gnupg_keyname
KeyComment = gnupg_keycomment
}
Config {
Main {
Language = lang_select
Owner = owner_address
SubscribeRules = subscribe_selection
PostingRules = posting_selection
Confirm = confirm_selection
WebUsers = webusers
}
Processing {
Prefix = prefix
ReplyToSelf = reply_to_self
Trailer = trailer
From = from_address
}
}
}
}

View file

@ -0,0 +1,201 @@
UI {
Top {
Language = 1
Interface = 1
}
Navigation {
DomainSelect = 1
ListSelect = 1
ListCreate = 1
Subscribers {
Subscribers = 1
Digest = 1
Allow = 1
Deny = 1
Moderators = 1
}
Config {
Main = 1
Subscription = 1
Posting = 1
Processing = 1
GpgEzmlmOptions = 1
Archive = 1
Admin = 1
All = 1
}
Gnupg {
PublicKeys = 1
SecretKeys = 1
GenerateKey = 1
}
TextEdit = 1
ListDelete = 1
SubscribeLog = 1
GpgEzmlmConvert = 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
}
}
}
GenerateKey {
KeyName = gnupg_keyname
KeyComment = gnupg_keycomment
KeySize = gnupg_keysize
KeyExpiration = gnupg_keyexpires
}
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 = archive_enabled
Access = archive_access
RemovePrivateHeader = archive_remove_private_header
}
Subscription {
Rules = subscribe_selection
ConfirmSub = confirm_sub
ConfirmUnsub = confirm_unsub
Path = mod_sub_path
}
Admin {
Enabled {
Self = admin_enabled
RequestSubscribers = admin_get_subscribers
EditText = admin_edit_text
Path = admin_path
}
}
Posting {
Rules = posting_selection
UseDeny = block_deny
Confirm = confirm_post
SizeMax = msgsize_max
SizeMin = msgsize_min
MimeReject = mimereject
Path = mod_post_path
}
GpgEzmlmOptions {
SignMessages = gpgezmlm_signmessages
PlainWithoutKey = gpgezmlm_plainwithoutkey
RequireSigs = gpgezmlm_requiresigs
AllowKeySubmission = gpgezmlm_allowkeysubmission
EncryptToAll = gpgezmlm_encrypttoall
VerifiedKeyReq = gpgezmlm_verifiedkeyreq
}
Processing {
Prefix = prefix
ReplyToSelf = reply_to_self
Trailer = trailer
From = from_address
MimeFilter = mimefilter
HeaderFilter = headerfilter
HeaderAdd = headeradd
CopyLines = copylines
}
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
MimeFilter = mimefilter
MimeReject = mimereject
HeaderFilter = headerfilter
HeaderAdd = headeradd
CopyLines = copylines
Language = lang_select
Charset = charset_select
WebUsers = webusers
}
}
}
}

View file

@ -0,0 +1,144 @@
UI {
Top {
Language = 1
Interface = 1
}
Navigation {
DomainSelect = 1
ListSelect = 1
ListCreate = 1
Subscribers {
Subscribers = 1
Digest = 1
Allow = 1
Deny = 1
Moderators = 1
}
Config {
Main = 1
Subscription = 1
Posting = 1
Processing = 1
GpgEzmlmOptions = 1
Archive = 1
Admin = 1
}
Gnupg {
PublicKeys = 1
SecretKeys = 1
GenerateKey = 1
}
TextEdit = 1
ListDelete = 1
SubscribeLog = 1
GpgEzmlmConvert = 1
Help = 1
}
Options {
Create {
Listname = create_listname
Listaddress = create_listaddress
Listlanguage = lang_select
Webuser = webusers
}
Subscribers {
Subscribers = {}
Digest {
Enabled = digest_enabled
}
Deny {
Enabled = block_deny
}
Moderators {
Posting {
Self = mod_post
}
Subscription {
Self = mod_sub
}
Administration {
Self = admin_enabled
}
}
}
GenerateKey {
KeyName = gnupg_keyname
KeyComment = gnupg_keycomment
KeySize = gnupg_keysize
KeyExpiration = gnupg_keyexpires
}
Config {
Main {
Language = lang_select
Owner = owner_address
WebUsers = webusers
}
Archive {
Enabled = archive_enabled
Access = archive_access
RemovePrivateHeader = archive_remove_private_header
}
Subscription {
Rules = subscribe_selection
ConfirmSub = confirm_sub
ConfirmUnsub = confirm_unsub
}
Admin {
Enabled {
Self = admin_enabled
RequestSubscribers = admin_get_subscribers
EditText = admin_edit_text
}
}
Posting {
Moderate = posting_selection
UseDeny = block_deny
Confirm = confirm_post
SizeMax = msgsize_max
SizeMin = msgsize_min
MimeReject = mimereject
}
GpgEzmlmOptions {
SignMessages = gpgezmlm_signmessages
PlainWithoutKey = gpgezmlm_nokeynocrypt
RequireSigs = gpgezmlm_requiresigs
AllowKeySubmission = gpgezmlm_allowkeysubmission
EncryptToAll = gpgezmlm_encrypttoall
VerifiedKeyReq = gpgezmlm_verifiedkeyreq
}
Processing {
Prefix = prefix
ReplyToSelf = reply_to_self
Trailer = trailer
From = from_address
MimeFilter = mimefilter
HeaderFilter = headerfilter
HeaderAdd = headeradd
}
}
}
}