diff --git a/collects/meta/web/common/extras.rkt b/collects/meta/web/common/extras.rkt index 0c1d72830a..5c835139c2 100644 --- a/collects/meta/web/common/extras.rkt +++ b/collects/meta/web/common/extras.rkt @@ -13,3 +13,8 @@ (div align: 'center (div align: 'left style: "display: inline-block;" text))) + +;; a grayish tt text +(provide TT) +(define (TT . xs) + @tt[style: "background-color: #dde;"]{@xs}) diff --git a/collects/meta/web/minis/lists.rkt b/collects/meta/web/minis/lists.rkt index 518397b179..7816be1877 100644 --- a/collects/meta/web/minis/lists.rkt +++ b/collects/meta/web/minis/lists.rkt @@ -1,7 +1,104 @@ #lang at-exp s-exp "../common.rkt" +(provide mailing-lists-quick) + (define-context "lists") +(struct ML (name gmane-name google-name description)) + +(define MLs + (list (ML "users" "user" "racket-users" + @text{A discussion list for all things related to Racket. + Ask your questions here!}) + (ML "announce" "announce" #f + @text{A low-volume, moderated list for announcements, only.}) + (ML "dev" "devel" #f + @text{A mailing list for Racket development, for people who want to + see how the sausages are made @mdash and help make them.}))) + (define lists @page[#:title "Mailing Lists" #:file ""]{ - This is the Racket mailing list server.}) + @p{This is the Racket mailing list server. We have three public mailing + lists listed below, with several mirrors for each one.} + @(map show-list MLs)}) + +(define (show-list ml) + @text{ + @(define name (ML-name ml)) + @(define at-domain "@racket-lang.org") + @(define email (list name at-domain)) + @; the mixed styles will help against some spam harvesting too + @h1[style: '("margin-top: 2.5ex;" + " font-family: monospace;" + " text-decoration: underline;")]{ + @a[href: (list name "/")]{ + @span[style: "background-color: #dde; text-decoration: underline;"]{ + @name}@; + @span[style: "font-size: 82.5%;"]{@at-domain}}} + @p{@ML-description[ml]} + @form[action: (list name "/subscribe") method: 'post]{ + @span[style: "white-space: nowrap;"]{ + Quick subscribe: @input[type: 'text name: 'email size: 20 value: ""]}} + @(cond [(ML-google-name ml) + => (lambda (g) + @p{Mirrord on Google Groups as the + @a[href: @text{http://groups.google.com/group/@|g|/}]{ + @(string-titlecase (regexp-replace* #rx"-" g " ")) + group.}})]) + @(let* ([gmane @list{gmane.comp.lang.racket.@(ML-gmane-name ml)}] + [G "gmane.org"]) + @form[action: @`{http://search.@,|G|/} method: 'get]{ + @input[type: 'hidden name: 'group value: gmane] + @p{Mirrord as the + @a[href: @`{http://dir.@,|G|/@,gmane}]{@TT{@gmane}} + newsgroup on Gmane: + Browse using + @a[href: @`{http://news.@,|G|/@,gmane}]{a threaded interface}, + @a[href: @`{http://blog.@,|G|/@,gmane}]{a blog-like interface}, + or + @a[href: @`{nntp://news.@,|G|/@,gmane}]{as a newsgroup}; + RSS of complete + @a[href: @`{http://rss.@,|G|/messages/complete/@,gmane}]{messages} + or + @a[href: @`{http://rss.@,|G|/topics/complete/@,gmane}]{topics}, + and RSS of excerpted + @a[href: @`{http://rss.@,|G|/messages/excerpts/@,gmane}]{messages} + or + @a[href: @`{http://rss.@,|G|/topics/excerpts/@,gmane}]{topics}; + @span[style: "white-space: nowrap;"]{ + Search: @input[type: 'text name: 'query value: "" size: 20].}}}) + @(let ([url @list{http://www.mail-archive.com/@|email|/}]) + @form[action: "http://www.mail-archive.com/search" method: 'get + style: "display: inline; clear: none;"]{ + @input[type: 'hidden name: 'l value: email] + @p{@a[href: (list url "info.html")]{Archived} + at @tt{mail-archive.com}: + @a[href: url]{Browse}, + @a[href: (list url "maillist.xml")]{RSS}, + @span[style: "white-space: nowrap;"]{ + Search: @input[type: 'text name: 'q value: "" size: 20].}}})}) + +;; TODO: improve this using the above, *and* link to the above + +(define (maillist-email name) + @TT{@big{@strong{@name}}@"@"racket-lang.org}) +(define (maillist-url name) + (define url "http://lists.racket-lang.org/") + @text{@a[href: `(,url ,name "/")]{Subscribe} + or @a[href: `(,url ,name "/archive/")]{browse}}) + +(define (mailing-lists-quick) + @parlist[@strong{Mailing Lists} + @text{@maillist-email{users} @mdash a discussion list for all things + related to Racket. Ask your questions here! + (@maillist-url{users}.) + @; These are not set up yet + @; also via @gmane{racket} and @|google-groups|). + } + @text{@maillist-email{announce} @mdash a low-volume, moderated list + for announcements, only. (@maillist-url{announce}.)} + @text{@maillist-email{dev} @mdash a mailing list for Racket development, + for the people who want to see how the sausages are made and help make + them. (@maillist-url{dev}.) + @; @";" also on @gmane{plt.dev}.) + }]) diff --git a/collects/meta/web/www/community.rkt b/collects/meta/web/www/community.rkt index f922e7ece8..84c15e1abe 100644 --- a/collects/meta/web/www/community.rkt +++ b/collects/meta/web/www/community.rkt @@ -1,40 +1,13 @@ #lang at-exp s-exp "shared.rkt" -(require "../stubs/blog.rkt" "../stubs/git.rkt" "../stubs/pre.rkt" - "people.rkt" "irc.rkt") - -(define (TT . xs) - @tt[style: "background-color: #dde;"]{@xs}) - -(define (maillist-email name) - @TT{@big{@strong{@name}}@"@"racket-lang.org}) -(define (maillist-url name) - (define url "http://lists.racket-lang.org/") - @text{@a[href: `(,url ,name "/")]{Subscribe} - or @a[href: `(,url ,name "/archive/")]{browse}}) -;; TODO: Need to finish the setup for gmane and google-groups -;; (define (gmane name) -;; @a[href: `("http://dir.gmane.org/gmane.lisp.scheme." ,name)]{Gmane}) -;; (define google-groups -;; @a[href: "http://groups.google.com/group/plt-scheme"]{Google Groups}) +(require "people.rkt" "irc.rkt" + "../minis/lists.rkt" + "../stubs/blog.rkt" "../stubs/git.rkt" "../stubs/pre.rkt") (provide community) (define community @page{ - @parlist[@strong{Mailing Lists} - @text{@maillist-email{users} @mdash a discussion list for all things - related to Racket. Ask your questions here! - (@maillist-url{users}.) - @; These are not set up yet - @; also via @gmane{racket} and @|google-groups|). - } - @text{@maillist-email{announce} @mdash a low-volume, moderated list - for announcements, only. (@maillist-url{announce}.)} - @text{@maillist-email{dev} @mdash a mailing list for Racket development, - for the people who want to see how the sausages are made and help make - them. (@maillist-url{dev}.) - @; @";" also on @gmane{plt.dev}.) - }] + @mailing-lists-quick @parlist[@strong{Discussion Channels} @text{@irc-chat{Chat on IRC} in the @TT{@big{@strong{#racket}}} channel on @a[href: "http://freenode.net"]{@tt{freenode.net}}