racket/collects/meta/web/stubs/mailman.rkt
Eli Barzilay ca3b27b810 Allow #:part-of to use symbolic names, add it to a bunch of pages.
(Using a symbolic name makes it easy to use without worrying about
circular dependencies.)
2010-06-16 16:49:02 -04:00

329 lines
15 KiB
Racket

#lang at-exp s-exp "../common.rkt"
(define-context "stubs/mailman")
(define (MM . tag) @literal{<MM-@|tag|>})
(define (MM/ . tag) @literal{</MM-@|tag|>})
(define (MMform name . body)
(list @MM{@(and name (list name "-"))Form-Start} body @MM{Form-End}))
(define style-header
@style/inline{
h1 {
text-align: center;
background-color: #9cf;
padding: 0.5em;
font-size: 150%;
font-weight: bold;
}
h2 {
text-align: left;
padding: 0.1em 0.5em;
background-color: #fda;
font-size: 120%;
font-weight: bold;
}
.subp {
margin: 0.5ex 0 0.5ex 1em;
}})
(define (subp . body) (apply div class: 'subp body))
(define (graytd . body) (apply td bgcolor: "#ddd" body))
(define listinfo
@page[#:title @list{Mailing lists: @MM{List-Name}}
#:extra-headers style-header #:part-of 'community]{
@; --------------------
@comment{@||
Based on the Mailman file "listinfo.html", revision: 5865
Modified to fit the racket pages, add a mail-archive searchbox
@||}
@; --------------------
@h1{@MM{List-Name}: @MM{List-Description}}
@; --------------------
@h2{About @MM{List-Name}
@span[style: '("float: right; font-weight: normal; font-size: 80%;"
" margin-top: 4px;")]{
@MMform['Lang]{@MM{displang-box} @MM{list-langs}}}}
@subp{@MM{List-Info}}
@subp{To see the collection of prior postings to the list, visit the
@MM{Archive}@MM{List-Name} Archives@MM/{Archive}.
@MM{Restricted-List-Message}}
@; This is the mail-archive search box
@form[action: "http://www.mail-archive.com/search" method: 'get]{@subp{
@input[type: 'hidden name: 'l value: @MM{Posting-Addr}]
Archives are also available at
@a[href: @list{http://www.mail-archive.com/@MM{Posting-Addr}/}]{
@tt{mail-archive}},
search it here:
@input[type: 'text name: 'q value: "" size: 16]}}
@subp{(@a[href: "/"]{More information} on other ways to use this list and
other public Racket lists.)}
@; --------------------
@h2{Using @MM{List-Name}}
@subp{To post a message to all the list members, send email to
@a[href: @list{mailto:@MM{Posting-Addr}}]{@MM{Posting-Addr}}.}
@subp{You can subscribe to the list, or change your existing subscription,
in the sections below.}
@; --------------------
@h2{Subscribing to @MM{List-Name}}
@subp{Subscribe to @MM{List-Name} by filling out the following form.
@MM{List-Subscription-Msg}}
@subp{
@MMform['Subscribe]{
@table[cellspacing: 2 cellpadding: 2 width: "90%" align: 'center]{
@tr{@graytd{Your email address:}
@td{@MM{Subscribe-Box}}
@td{@nbsp}}
@tr{@graytd{Your name (optional):}
@td{@MM{fullname-box}}
@td{@nbsp}}
@tr{@td[colspan: 3 style: "font-size: 82.5%;"]{
@p{You may enter a privacy password below. This provides
only mild security, but should prevent others from messing
with your subscription. @b{Do not use a valuable password}
as it will occasionally be emailed back to you in
cleartext.}
@p{If you choose not to enter a password, one will be
automatically generated for you, and it will be sent to you
once you've confirmed your subscription. You can always
request a mail-back of your password when you edit your
personal options.}
@MM{Reminder}}}
@tr{@graytd{Pick a password:}
@td{@MM{New-Password-Box}}
@td{@nbsp}}
@tr{@graytd{Reenter password to confirm:}
@td{@MM{Confirm-Password}}
@td{@nbsp}}
@tr{@graytd{Which language do you prefer to display your messages?}
@td{@MM{list-langs}}
@td{@nbsp}}
@MM{digest-question-start}
@tr{@td{Would you like to receive list mail batched in a daily
digest?}
@td{@MM{Undigest-Radio-Button} No
@MM{Digest-Radio-Button} Yes}
@td{@nbsp}}
@MM{digest-question-end}
@tr{@td[colspan: 3]{
@p[style: "text-align: center;"]{
@MM{Subscribe-Button}}}}}}}
@; --------------------
@h2{@a[name: 'subscribers]{@MM{List-Name} Subscribers}}
@subp{@MMform['Options]{@MM{Editing-Options}}}
@; not needed: @subp{@MMform['Roster]{@MM{Roster-Option}}}
@; --------------------
@h2{@nbsp}
@MM{Mailman-Footer}})
(define subscribe
@page[#:title @list{@MM{List-Name} Subscription results}
#:extra-headers style-header]{
@; --------------------
@comment{@||
Based on the Mailman file "subscribe.html", revision: 3550
Modified to fit the racket pages
@||}
@; --------------------
@h1{@MM{List-Name} Subscription results}
@subp{@MM{Results}}
@MM{Mailman-Footer}})
(define options
@page[#:title @list{@MM{Presentable-User} membership configuration
for @MM{List-Name}}
#:extra-headers style-header]{
@; --------------------
@comment{@||
Based on the Mailman file "options.html" (no revision specified)
Modified to fit the racket pages
@||}
@; --------------------
@h1{@MM{List-Name} mailing list membership configuration for
@MM{Presentable-User}}
@subp{@div[style: "float: right;"]{@MMform[#f]{@MM{logout-button}}}
@b{@MM{Presentable-User}}'s subscription status, password, and options
for the @MM{List-Name} mailing list.}
@subp{@MM{Case-Preserved-User}
@MM{Disabled-Notice}
@div[style: "background-color: #faa;"]{@MM{Results}}}
@(define (tablesec . body)
(apply table cellspacing: 5 cellpadding: 3 width: "100%" align: 'center
body))
@(define (h2sub . body)
@h2[style: "margin-bottom: 0; font-size: 100%;"]{@body})
@(define (center . body)
@div[style: "text-align: center; margin-top: 1ex;"]{@body})
@(define (global-checkbox button-name)
@div[align: 'right]{@MM{global-@|button-name|-button}@i{Set globally}})
@MMform[#f]{
@tablesec{
@tr{@td[colspan: 2]{
@h2sub{Changing your @MM{List-Name} membership information}
@subp{You can change the address that you are subscribed to the
mailing list with by entering the new address in the fields
below. Note that a confirmation email will be sent to the new
address, and the change must be confirmed before it is
processed.
@small{(Confirmations time out after about
@MM{pending-days}.)}}
@subp{You can also optionally set or change your real name
(i.e. @em{John Smith}).}
@subp{If you want to make the membership changes for all the
lists that you are subscribed to at @MM{host}, turn on the
@em{Change globally} check box.}}}
@tr{@td[align: 'center]{
@table[cellspacing: 2 cellpadding: 2 width: "80%"]{
@tr{@graytd[align: 'right]{New address:}
@td{@MM{new-address-box}}}
@tr{@graytd[align: 'right]{Again to confirm:}
@td{@MM{confirm-address-box}}}}}
@td[align: 'center]{
@table[cellspacing: 2 cellpadding: 2 width: "80%"]{
@tr{@graytd[align: 'right]{Your name (optional):}
@td{@MM{fullname-box}}}}}}
@tr{@td[colspan: 2 align: 'center]{@MM{change-address-button}}}
@tr{@td[colspan: 2 align: 'center]{
@MM{global-change-of-address}Change globally}}}
@tablesec{
@tr{@td[width: "50%"]{@h2sub{Unsubscribing from @MM{List-Name}}}
@td[width: "50%"]{@h2sub{Your other @MM{Host} subscriptions}}}
@tr{@td{Turn on the confirmation checkbox and hit this button to
unsubscribe from this mailing list.
@br
@strong{Warning:} This action will be taken immediately!
@center{@MM{Unsubscribe-Button}}}
@td{You can view a list of all the other mailing lists at
@MM{host} for which you are a member. Use this if you want to
make the same membership option changes to this other
subscriptions.
@center{@MM{Other-Subscriptions-Submit}}}}}
@tablesec{
@tr{@td[colspan: 2]{@h2sub{Your @MM{List-Name} Password}}}
@tr[valign: 'top]{
@td[width: "50%"]{
@h3{@a[name: "reminder"]{Forgotten Your Password?}}
Click this button to have your password emailed to your membership
address.
@br
@MM{Umbrella-Notice}
@center{@MM{Email-My-Pw}}}
@td[width: "50%"]{
@h3{@a[name: "changepw"]{Change Your Password}}
@table[cellspacing: 2 cellpadding: 2 width: "70%" align: 'center]{
@tr{@graytd[align: 'right]{New password:}
@td{@MM{New-Pass-Box}}}
@tr{@graytd[align: 'right]{Again to confirm:}
@td{@MM{Confirm-Pass-Box}}}}
@center{@MM{Change-Pass-Button}}
@center{@MM{global-pw-changes-button}Change globally}}}}
@tablesec{
@tr{@td[colspan: 2]{@h2sub{Your @MM{List-Name} Subscription Options}}}
@tr{@td[colspan: 2]{
@subp{@em{Current values are checked.}}
@subp{Note that some of the options have a @em{Set globally}
checkbox. Checking this field will cause the changes to be
made to every mailing list that you are a member of on
@MM{host}. Click on @em{List my other subscriptions} above to
see which other mailing lists you are subscribed to.}}}
@tr{@graytd[width: "80%"]{
@a[name: "disable"]{@strong{Mail delivery}} @br
Set this option to @em{Enabled} to receive messages posted to
this mailing list. Set it to @em{Disabled} if you want to stay
subscribed, but don't want mail delivered to you for a while
(e.g. you're reading the list elsewhere).}
@graytd[width: "20%"]{
@MM{delivery-enable-button}Enabled @br
@MM{delivery-disable-button}Disabled @br
@global-checkbox{deliver}}}
@tr{@graytd{@strong{Set Digest Mode} @br
If you turn digest mode on, you'll get posts bundled together
(usually one per day but possibly more on busy lists), instead of
singly when they're sent. If digest mode is changed from on to
off, you may receive one last digest.}
@graytd{
@MM{Undigest-Radio-Button}Off @br
@MM{Digest-Radio-Button}On}}
@tr{@graytd{@strong{Get MIME or Plain Text Digests?} @br
Your mail reader may or may not support MIME digests. In general
MIME digests are preferred, but if you have a problem reading
them, select plain text digests.}
@graytd{
@MM{Mime-Digests-Button}MIME @br
@MM{Plain-Digests-Button}Plain Text @br
@global-checkbox{mime}}}
@tr{@graytd{@strong{Receive your own posts to the list?} @br
Ordinarily, you will get a copy of every message you post to the
list. If you don't want to receive this copy, set this option to
@em{No}.}
@graytd{@MM{dont-receive-own-mail-button}No @br
@MM{receive-own-mail-button}Yes}}
@tr{@graytd{@strong{Receive acknowledgement mail when you send mail to
the list?}}
@graytd{
@MM{dont-ack-posts-button}No @br
@MM{ack-posts-button}Yes}}
@tr{@graytd{@strong{Get password reminder email for this list?} @br
Once a month, you will get an email containing a password
reminder for every list at this host to which you are subscribed.
You can turn this off on a per-list basis by selecting @em{No}
for this option. If you turn off password reminders for all the
lists you are subscribed to, no reminder email will be sent to
you.}
@graytd{
@MM{dont-get-password-reminder-button}No @br
@MM{get-password-reminder-button}Yes @p
@global-checkbox{remind}}}
@tr{@graytd{@strong{Conceal yourself from subscriber list?} @br
When someone views the list membership, your email address is
normally shown (in an obscured fashion to thwart spam
harvesters). If you do not want your email address to show up on
this membership roster at all, select @em{Yes} for this option.}
@graytd{
@MM{Public-Subscription-Button}No @br
@MM{Hide-Subscription-Button}Yes}}
@tr{@graytd{@strong{What language do you prefer?}}
@graytd{@MM{list-langs}}}
@tr{@graytd{@strong{Which topic categories would you like to subscribe
to?} @br
By selecting one or more topics, you can filter the traffic on
the mailing list, so as to receive only a subset of the messages.
If a message matches one of your selected topics, then you will
get the message,otherwise you will not.
@br
If a message does not match any topic, the delivery rule depends
on the setting of the option below. If you do not select any
topics of interest, you will get all the messages sent to the
mailing list.}
@graytd{@MM{topics}}}
@tr{@graytd{@strong{Do you want to receive messages that do not match
any topic filter?} @br
This option only takes effect if you've subscribed to at least
one topic above. It describes what the default delivery rule is
for messages that don't match any topic filter. Selecting
@em{No} says that if the message does not match any topic
filters, then you won't get the message, while selecting @em{Yes}
says to deliver such non-matching messages to you.
@br
If no topics of interest are selected above, then you will
receive every message sent to the mailing list.}
@graytd{
@MM{suppress-nonmatching-topics}No @br
@MM{receive-nonmatching-topics}Yes}}
@tr{@graytd{@strong{Avoid duplicate copies of messages?} @br
When you are listed explicitly in the @tt{To:} or @tt{Cc:}
headers of a list message, you can opt to not receive another
copy from the mailing list. Select @em{Yes} to avoid receiving
copies from the mailing list; select @em{No} to receive copies.
@br
If the list has member personalized messages enabled, and you
elect to receive copies, every copy will have a
@tt{X-Mailman-Copy: yes} header added to it.}
@graytd{
@MM{receive-duplicates-button}No @br
@MM{dont-receive-duplicates-button}Yes @br
@global-checkbox{nodupes}}}
@tr{@td[colspan: 2 align: 'center]{@MM{options-Submit-button}}}}}
@MM{Mailman-Footer}})