From 1b72aa175a353eb68191f37b57f01aeaa4d2c9a0 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 7 Mar 2014 14:30:32 -0700 Subject: [PATCH] meta/new-web: fill in corners Use soft links to represent redirections on the web site, where all redirections needed now are within a site (specifically, the download site). Adjust various pages that are essentially for backward compatibility. --- .../meta/new-web/download/data.rkt | 14 +- .../meta/new-web/download/download-pages.rkt | 2 + .../meta/new-web/download/indexes.rkt | 21 +++ .../meta/new-web/download/installer-pages.rkt | 8 +- .../meta/new-web/download/resources.rkt | 3 +- .../meta/new-web/download/symlinks.rkt | 26 ++- .../meta/new-web/minis/drracket.rkt | 7 +- .../plt-services/meta/new-web/minis/lists.rkt | 167 +----------------- pkgs/plt-services/meta/new-web/minis/pre.rkt | 14 +- pkgs/plt-services/meta/new-web/stubs/docs.rkt | 9 +- pkgs/plt-services/meta/new-web/testing.rkt | 9 + pkgs/plt-services/meta/new-web/www/code.rkt | 6 +- .../meta/new-web/www/community.rkt | 3 +- pkgs/plt-services/meta/new-web/www/help.rkt | 5 +- pkgs/plt-services/meta/new-web/www/index.rkt | 59 +++---- pkgs/plt-services/meta/new-web/www/irc.rkt | 45 ++--- .../meta/new-web/www/resources.rkt | 5 +- 17 files changed, 140 insertions(+), 263 deletions(-) create mode 100644 pkgs/plt-services/meta/new-web/download/indexes.rkt create mode 100644 pkgs/plt-services/meta/new-web/testing.rkt diff --git a/pkgs/plt-services/meta/new-web/download/data.rkt b/pkgs/plt-services/meta/new-web/download/data.rkt index b904ab1bae..e323b9fe50 100644 --- a/pkgs/plt-services/meta/new-web/download/data.rkt +++ b/pkgs/plt-services/meta/new-web/download/data.rkt @@ -50,12 +50,10 @@ ["sit" "StuffIt Archive"])) (define -mirrors- - ;; This is a sequence of - ;; (location url reposnisble-name email [techincal-contact]) - '(["Main download (USA, Massachusetts, Northeastern University)" - "http://download.racket-lang.org/installers/" - "Eli Barzilay" - "eli@barzilay.org"] + '(["Main (Amazon Web Services)" + main + "Matthew Flatt" + "mflatt@cs.utah.edu"] ["USA, Illinois (Northwestern University)" "http://www.eecs.northwestern.edu/racket/" "Robby Findler" @@ -125,7 +123,9 @@ (struct mirror (location url person email)) (define mirrors - (map (λ (m) (mirror (car m) (regexp-replace #rx"/?$" (cadr m) "/") + (map (λ (m) (mirror (car m) (if (string? (cadr m)) + (regexp-replace #rx"/?$" (cadr m) "/") + (cadr m)) (caddr m) (cadddr m))) -mirrors-)) diff --git a/pkgs/plt-services/meta/new-web/download/download-pages.rkt b/pkgs/plt-services/meta/new-web/download/download-pages.rkt index 8d0a96b67f..b5f77021f9 100644 --- a/pkgs/plt-services/meta/new-web/download/download-pages.rkt +++ b/pkgs/plt-services/meta/new-web/download/download-pages.rkt @@ -3,6 +3,8 @@ (require "resources.rkt" "data.rkt" "installer-pages.rkt" "symlinks.rkt" plt-web/style (prefix-in pre: "../minis/pre.rkt")) +(define docs "docs") + (provide render-download-page) (define (render-download-page [release current-release] [package 'racket]) (define version (release-version release)) diff --git a/pkgs/plt-services/meta/new-web/download/indexes.rkt b/pkgs/plt-services/meta/new-web/download/indexes.rkt new file mode 100644 index 0000000000..b3538f61e9 --- /dev/null +++ b/pkgs/plt-services/meta/new-web/download/indexes.rkt @@ -0,0 +1,21 @@ +#lang plt-web +(require plt-web/indexes + (only-in "../www/resources.rkt")) + +;; Run this module in a directory that contains "docs" as a snapshot +;; of the "docs" directory on download.racket-lang.org, and it will +;; generate "index.html" files to be uploaded to S3 to provide +;; directory-listing "index.html" files where none are present +;; already. +;; +;; The directory doesn't have to be "docs"; it can be any directory +;; at the root of download.racket-lang.org. +;; +;; After the "index.html" files are generated, you have to upload +;; them to S3 manually. + +(define download-site (site "download" + #:url "http://download.racket-lang.org/" + #:always-abs-url? #t)) + +(make-indexes download-site) diff --git a/pkgs/plt-services/meta/new-web/download/installer-pages.rkt b/pkgs/plt-services/meta/new-web/download/installer-pages.rkt index 4ea3be6c17..55308e3c2c 100644 --- a/pkgs/plt-services/meta/new-web/download/installer-pages.rkt +++ b/pkgs/plt-services/meta/new-web/download/installer-pages.rkt @@ -53,7 +53,7 @@ (λ (m) (define url (mirror-link - (string-append (mirror-url m) path) + (string-append (mirror-url* m) path) size (λ () (format "~a <~a>" (mirror-person m) @@ -72,6 +72,12 @@ @;(bundle-installation-instructions bundle) }) +(define (mirror-url* m) + (define u (mirror-url m)) + (if (eq? u 'main) + ((resource "download/installers/" #f)) + u)) + (provide installer->page) (define installer->page (let ([t (make-hasheq)]) diff --git a/pkgs/plt-services/meta/new-web/download/resources.rkt b/pkgs/plt-services/meta/new-web/download/resources.rkt index b086d5d334..a85d95d102 100644 --- a/pkgs/plt-services/meta/new-web/download/resources.rkt +++ b/pkgs/plt-services/meta/new-web/download/resources.rkt @@ -1,6 +1,7 @@ #lang plt-web +(require "../testing.rkt") (provide download-site) (define download-site (site "download" - #:url "http://download.racket-lang.org/")) + #:url (rewrite-for-testing "http://download.racket-lang.org/"))) diff --git a/pkgs/plt-services/meta/new-web/download/symlinks.rkt b/pkgs/plt-services/meta/new-web/download/symlinks.rkt index 393b1728e7..56bb372e9c 100644 --- a/pkgs/plt-services/meta/new-web/download/symlinks.rkt +++ b/pkgs/plt-services/meta/new-web/download/symlinks.rkt @@ -1,13 +1,21 @@ #lang plt-web - -(require "resources.rkt") +(require "resources.rkt" + "data.rkt" + version/utils) (provide (all-defined-out)) -(define (in-ftp . paths) - (string-join (cons "/var/ftp/pub/racket" paths) "/")) - -(define docs (symlink #:site download-site "/www/docs")) -(define installers (symlink #:site download-site (in-ftp "installers"))) -(define libs (symlink #:site download-site (in-ftp "libs/tags") "libs")) -(define stubs (symlink #:site download-site "/www/stubs")) +;; For versions 5.92 and later, redirect "installers/" +;; and "docs//..." to "releases//..." +(for ([r (in-list all-releases)]) + (define v (release-version r)) + (when (version<=? "5.92" v) + (symlink #:site download-site + (format "../releases/~a/installers" v) + (format "installers/~a" v)) + (symlink #:site download-site + (format "../../releases/~a/doc" v) + (format "docs/~a/html" v)) + (symlink #:site download-site + (format "../../releases/~a/pdf-doc" v) + (format "docs/~a/pdf" v)))) diff --git a/pkgs/plt-services/meta/new-web/minis/drracket.rkt b/pkgs/plt-services/meta/new-web/minis/drracket.rkt index d9149d087b..1e3dc20100 100644 --- a/pkgs/plt-services/meta/new-web/minis/drracket.rkt +++ b/pkgs/plt-services/meta/new-web/minis/drracket.rkt @@ -1,7 +1,12 @@ #lang plt-web +(require "../www/resources.rkt") + (define drracket-site (site "drracket" - #:url "http://drracket.org/")) + #:url "http://drracket.org/" + #:share-from www-site + #:page-style? #f + #:meta? #t)) ;; This just shows an ascii logo and redirects to the main page. Thanks ;; to Can Burak Cilingir for both the logo and the drracket.org domain diff --git a/pkgs/plt-services/meta/new-web/minis/lists.rkt b/pkgs/plt-services/meta/new-web/minis/lists.rkt index c5be0cc8a9..487cca0515 100644 --- a/pkgs/plt-services/meta/new-web/minis/lists.rkt +++ b/pkgs/plt-services/meta/new-web/minis/lists.rkt @@ -2,169 +2,6 @@ (provide mailing-lists-quick) -(define lists-site (site "lists" - #:url "http://lists.racket-lang.org/")) - -(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. - @small{(These are posted on the @TT{users} list too, no need - to subscribe to both.)}}) - (ML "dev" "devel" #f - @text{A mailing list for Racket development. - @small{(For people who want to see how the sausages are made - — and help make them.)}}))) - -(define lists - @page[#:site lists-site - #:title "Mailing Lists" #:file "" #:part-of 'community - #:description - @'{Racket mailing lists for users, developers, announcements, and more.} - (define (list-cells what) (map (λ (r) (r what)) list-renderers)) - ]{ - @p{This is the Racket mailing list server. We have several public mailing - lists, some are listed below with several mirrors for each one. The - complete list of public mailing lists is available on - @a[href: "listinfo"]{this page}.} - @(define gap1 (tr (map (λ (_) @td{@div[style: "height: 1ex;"]{}}) MLs))) - @(define gap2 (tr (map (λ (_) @td{}) MLs))) - @(define (sec . text) - @list{@gap1 - @tr{@td[style: '("background-color: #dddddd; font-weight: bold;" - " padding: 0;") - colspan: (length MLs)]{@text}} - @gap2}) - @table[style: "width: 100%; margin: auto; text-align: center;" - frame: 'box rules: 'cols cellpadding: 5]{ - @tr[style: "border-bottom: 1px solid; background-color: #ccccff;"]{ - @(list-cells 'header-cell)} - @tr[valign: 'top style: "text-align: left;"]{@(list-cells 'description)} - @tr{@(list-cells 'main-page-cell)} - @tr{@(list-cells 'graph-cell)} - @sec{Subscription: enter your email here to subscribe to a mailing list} - @tr{@(list-cells 'subscribe-cell)} - @sec{Gmane Mirror} - @tr{@(list-cells 'gmane-cell)} - @sec{Archive at mail-archive.com} - @tr{@(list-cells 'mail-archive-cell)} - @sec{Google group mirror} - @tr{@(list-cells 'google-cell)}}}) - -(define (list-renderer ml) - (define name (ML-name ml)) - (define at-domain "@racket-lang.org") - (define email (list name at-domain)) - (define description (ML-description ml)) - (define gmane - (let ([gm (ML-gmane-name ml)]) - (and gm @list{gmane.comp.lang.racket.@(ML-gmane-name ml)}))) - (define (gmane-link base . body) - (unless gmane - (error 'list-renderer "internal error: no gmane info for ~a" name)) - (let* ([path (if (pair? base) (list "/" (cdr base) "/") "/")] - [base (if (pair? base) (car base) base)] - [pfx (if (regexp-match? #rx"://" base) base (list "http://" base))]) - @a[href: (list pfx ".gmane.org" path gmane)]{@body})) - (define (mail-archive-link suffix . body) - @a[href: (list "http://www.mail-archive.com/" email "/" suffix)]{@body}) - (define google-groups-url - (let ([g (ML-google-name ml)]) - (and g (list "http://groups.google.com/group/" g "/")))) - (define ((mk-form make) url #:method [method 'get] . body) - (make @form[action: url method: method - style: "display: inline; clear: none;"]{ - @div{@body}})) - (define (mk-subscribe mk) - @(mk-form mk)[(list (url-of lists #t) name "/subscribe") #:method 'post]{ - @input[type: 'text name: 'email size: 20 value: "" - placeholder: "Email to Subscribe" - title: @list{Enter your email to subscribe - to the "@name" mailing list.}]}) - (define form-cell (mk-form td)) - (λ (what) - (case what - [(header-cell) - @th[style: "width: 33%;"]{ - @; the mixed styles will help against some spam harvesting too - @span[style: '("font-size: x-large;" - " font-family: monospace; font-weight: bold;")]{ - @TT{@name}@; - @span[style: "font-size: small;"]{@at-domain}}}] - [(description) @td{@description}] - [(main-page-cell) - @td{@a[href: (list name "/")]{@big{@b{@TT{@name}}} page} - @bull - @a[href: (list name "/archive/")]{archive}}] - [(graph-cell) - @td{@img[src: (list "http://gmane.org/plot-rate.php?group=" gmane) - style: "width: 80%;"]}] - [(subscribe-cell) (mk-subscribe td)] - [(google-cell) - (if google-groups-url - @form-cell[(list google-groups-url "search")]{ - @a[href: google-groups-url]{ - @(string-titlecase - (regexp-replace* #rx"-" (ML-google-name ml) " "))} - @br - @span[style: "white-space: nowrap;"]{ - Search: @input[type: 'text name: 'q value: "" size: 20].}} - @td{@small{—none—}})] - [(mail-archive-cell) - @form-cell["http://www.mail-archive.com/search"]{ - @input[type: 'hidden name: 'l value: email] - @mail-archive-link["info.html"]{Archive} - @bull - @mail-archive-link[""]{Browse} - @bull - @mail-archive-link["maillist.xml"]{RSS} - @br - @span[style: "white-space: nowrap;"]{ - Search: @input[type: 'text name: 'q value: "" size: 20].}}] - [(gmane-cell) - @form-cell["http://search.gmane.org/"]{ - @input[type: 'hidden name: 'group value: gmane] - @gmane-link["dir"]{@TT{@gmane}} - @br - @gmane-link["news"]{threaded} - @bull - @gmane-link["blog"]{blog} - @bull - @gmane-link["nntp://news"]{newsgroup} - @br - Feed: - @gmane-link['("rss" "messages/complete")]{messages} - @bull - @gmane-link['("rss" "topics/complete")]{topics} - @br - @;Excerpt feed: - @;@gmane-link['("rss" "messages/excerpts")]{messages} - @;@bull - @;@gmane-link['("rss" "topics/excerpts")]{topics} - @;@br - @span[style: "white-space: nowrap;"]{ - Search: @input[type: 'text name: 'query value: "" size: 20].}}] - [(quick) - @text{ - @big{@TT{@b{@name}}@small{@tt{@at-domain}}} - @div[style: "margin-left: 2em;"]{ - @description - @br - @div[style: "float: right;"]{@(mk-subscribe values)} - [@a[href: (list (url-of lists) name "/")]{list page}, - @gmane-link["dir"]{gmane mirror}, - @mail-archive-link[""]{mail-archive}@; - @(and google-groups-url - @text{, @a[href: google-groups-url]{google group mirror}})]}}] - [else (error 'list-cell "internal error")]))) - -(define list-renderers (map list-renderer MLs)) - (define (mailing-lists-quick) - @text{@(apply parlist @strong{Mailing Lists} - (map (λ (r) (r 'quick)) list-renderers)) - @p{See the @lists{mailing list server} for more details.}}) + @text{@parlist[@strong{Mailing Lists} + @list{@a[href: "http://lists.racket-lang.org/"]{Subscribe or browse}.}]}) diff --git a/pkgs/plt-services/meta/new-web/minis/pre.rkt b/pkgs/plt-services/meta/new-web/minis/pre.rkt index 80eb7f3665..4b34266ad7 100644 --- a/pkgs/plt-services/meta/new-web/minis/pre.rkt +++ b/pkgs/plt-services/meta/new-web/minis/pre.rkt @@ -1,15 +1,18 @@ #lang plt-web (require "../www/resources.rkt" + "../testing.rkt" plt-web/style) (provide installers) (define pre-site (site "pre" - #:url "http://pre.racket-lang.org/" + #:url (rewrite-for-testing "http://pre.racket-lang.org/") #:share-from www-site)) -(define installers - @page[#:site pre-site #:width 'full]{ +(define (main id) + @page[#:site pre-site + #:id id + #:width 'full]{ @columns[10 #:center? #t #:row? #t #:center-text? #f]{ @h3{Snapshot Builds}} @columns[8 #:center? #t #:row? #t #:center-text? #f]{ @@ -17,3 +20,8 @@ University of Utah}} @li{@a[href: "http://plt.eecs.northwestern.edu/snapshots/"]{ Northwestern University}}}}}) + +;; Generate at both "installers.html" (traditional path) +;; and "index.html" (old entry point, now subsumed) +(define installers (main 'installers)) +(void (main 'index)) diff --git a/pkgs/plt-services/meta/new-web/stubs/docs.rkt b/pkgs/plt-services/meta/new-web/stubs/docs.rkt index d4befc2fb3..29fef78543 100644 --- a/pkgs/plt-services/meta/new-web/stubs/docs.rkt +++ b/pkgs/plt-services/meta/new-web/stubs/docs.rkt @@ -1,9 +1,10 @@ #lang plt-web -(require (only-in "../www/resources.rkt" www-site)) +(require (only-in "../www/resources.rkt" www-site) + "../testing.rkt") (define docs-site (site "stubs/docs" - #:url "http://docs.racket-lang.org/" + #:url (rewrite-for-testing "http://docs.racket-lang.org/") #:always-abs-url? #t #:page-style? #f #:meta? #t @@ -31,3 +32,7 @@ .navsettop, .tocset { top: 60px; } .versionbox { top: 64px; } })) + +(provide docs-path) +(define (docs-path [path ""]) + (string-append ((resource "stubs/docs/" #f)) path)) diff --git a/pkgs/plt-services/meta/new-web/testing.rkt b/pkgs/plt-services/meta/new-web/testing.rkt new file mode 100644 index 0000000000..12d783c797 --- /dev/null +++ b/pkgs/plt-services/meta/new-web/testing.rkt @@ -0,0 +1,9 @@ +#lang racket/base + +(provide rewrite-for-testing) + +;; Adjust root URLs for testing purposes. +;; Root URLs must be written into roots, not +;; paths within a URLs +(define (rewrite-for-testing s) + s) diff --git a/pkgs/plt-services/meta/new-web/www/code.rkt b/pkgs/plt-services/meta/new-web/www/code.rkt index 3308b59fec..f4ba62a7d8 100644 --- a/pkgs/plt-services/meta/new-web/www/code.rkt +++ b/pkgs/plt-services/meta/new-web/www/code.rkt @@ -1,16 +1,16 @@ #lang plt-web (require syntax-color/module-lexer setup/xref - scribble/xref scribble/tag) + scribble/xref scribble/tag + (only-in "../stubs/docs.rkt" docs-path)) (provide code) -(define doc-root "http://docs.racket-lang.org/") - (define expand-namespace (make-base-namespace)) (define xref (load-collections-xref)) (define (code . strs) + (define doc-root (docs-path)) (define str (let* ([str (string-append* strs)] [N (- 6 (length (regexp-match-positions* "\n" str)))]) diff --git a/pkgs/plt-services/meta/new-web/www/community.rkt b/pkgs/plt-services/meta/new-web/www/community.rkt index c01d940899..f9d6fb0476 100644 --- a/pkgs/plt-services/meta/new-web/www/community.rkt +++ b/pkgs/plt-services/meta/new-web/www/community.rkt @@ -34,8 +34,7 @@ @mailing-lists-quick @irc-quick @parlist[@strong{RacketCon} - @text{@-rcon[] is our annual conference: - @-rcon[2012] and @-rcon[2011].}] + @text{@-rcon[] is our annual conference.}] @parlist[@strong{PLT Design Inc.} @text{@blog — announcements, helpful hints, and thoughtful rants.} @text{@a[href: "http://twitter.com/#!/racketlang"]{Twitter} diff --git a/pkgs/plt-services/meta/new-web/www/help.rkt b/pkgs/plt-services/meta/new-web/www/help.rkt index d820c64957..24fe66f158 100644 --- a/pkgs/plt-services/meta/new-web/www/help.rkt +++ b/pkgs/plt-services/meta/new-web/www/help.rkt @@ -1,10 +1,11 @@ #lang plt-web -(require "resources.rkt" "community.rkt") +(require plt-web/style "resources.rkt" "community.rkt") (provide help) (define help @page[#:site www-site #:link-title "Need Help?"]{ + @columns[12 #:center? #t #:row? #t]{ @parlist[@strong{Don't Panic!} @text{Racket has a variety of resources designed to help you with any problems you may have.}] @@ -35,4 +36,4 @@ don't pan out@";" sign up for it in the @community area of the website.}] @br - @text{Thanks for using Racket!}}) + @text{Thanks for using Racket!}}}) diff --git a/pkgs/plt-services/meta/new-web/www/index.rkt b/pkgs/plt-services/meta/new-web/www/index.rkt index 3ffd0c8f40..ca42ca0228 100644 --- a/pkgs/plt-services/meta/new-web/www/index.rkt +++ b/pkgs/plt-services/meta/new-web/www/index.rkt @@ -1,7 +1,9 @@ #lang plt-web (require plt-web/style racket/runtime-path - (prefix-in pre: "../minis/pre.rkt")) + "irc.rkt" + (prefix-in pre: "../minis/pre.rkt") + (only-in "../stubs/docs.rkt" docs-path)) ;; TODO ;; -- add links in top paragraph @@ -16,9 +18,6 @@ (define-runtime-path js-dir "js") (define-runtime-path css-dir "css") -(define (doc path . text) - (apply a href: (list "http://docs.racket-lang.org/" path) text)) - (struct example (title code desc)) (define ((example-with-help . help) code desc #:title title) @@ -52,6 +51,7 @@ (define (elemcode . strs) (apply tt strs)) (define examples + (lazy @; --- Each example here should be at most 7 lines long ------------ (list @; Candidates for initial example: -------------------------------- @@ -264,7 +264,7 @@ (define x (make-hasheq)) (hash-set! x A B) (x A)}}) - ))) + )))) (define blurb "Racket is a programming language") @@ -314,7 +314,7 @@ dialects. Racket's libraries support applications from web servers to distribut computing and from databases to charts. } -@(apply slideshow-explain examples) +@(apply slideshow-explain (force examples)) @div[id: "topcontent"]{ @row{ @@ -341,7 +341,7 @@ computing and from databases to charts. @a[href: "#" class: "toggle wide_only next_toggle" gumby-trigger: ".unique_lines|.web_scraper" style: "position: absolute; top: 40%; right: -15%"]{@next} - @(apply slideshow-panel examples)}} + @(apply slideshow-panel (force examples))}} @columns[1] @@ -352,11 +352,11 @@ computing and from databases to charts. @columns[12 #:row? #t #:center? #t style: "text-align:justify;font-size: 120%; margin-top: 20pt; "]{ -@a[href: "http://docs.racket-lang.org/quick/"]{Draw more pictures} or -@a[href: "http://docs.racket-lang.org/more/"]{build a web server from scratch}. Racket includes both -@a[href: "http://docs.racket-lang.org/"]{batteries} and a -@a[href: "http://docs.racket-lang.org/drracket/"]{programming environment}, -so @a[href: "http://docs.racket-lang.org/getting-started/"]{get started}! +@a[href: (docs-path "quick/")]{Draw more pictures} or +@a[href: (docs-path "more/")]{build a web server from scratch}. Racket includes both +@a[href: (docs-path)]{batteries} and a +@a[href: (docs-path "drracket/")]{programming environment}, +so @a[href: (docs-path "getting-started/")]{get started}! }} @sectitle{Go Further} @@ -365,22 +365,22 @@ so @a[href: "http://docs.racket-lang.org/getting-started/"]{get started}! @growbox["Program"]{Racket's -@a[href: "http://docs.racket-lang.org/guide/intro.html#(part._.Interacting_with_.Racket)"]{interactive +@a[href: (docs-path "guide/intro.html#(part._.Interacting_with_.Racket)")]{interactive mode} encourages experimentation, and quick scripts easily compose into larger systems. Small scripts and large systems both benefit from -@a[href: "http://docs.racket-lang.org/guide/performance.html"]{native-code +@a[href: (docs-path "guide/performance.html")]{native-code JIT compilation} When a system gets too big to keep in your head, you can add -@a[href: "http://docs.racket-lang.org/ts-guide/index.html"]{static +@a[href: (docs-path "ts-guide/index.html")]{static types}.} -@growbox["Language"]{@a[href: "http://docs.racket-lang.org/guide/languages.html"]{Extend +@growbox["Language"]{@a[href: (docs-path "guide/languages.html")]{Extend Racket} whenever you need to. Mold it to better suit your tasks without sacrificing -@a[href: "http://docs.racket-lang.org/guide/dialects.html"]{interoperability} +@a[href: (docs-path "guide/dialects.html")]{interoperability} with existing libraries and without having to modify the -@a[href: "http://docs.racket-lang.org/guide/intro.html"]{tool chain}. +@a[href: (docs-path "guide/intro.html")]{tool chain}. When less is more, you can remove parts of a language or start over and build a new one.} @@ -388,7 +388,7 @@ and build a new one.} @a[href: "http://htdp.org/"]{starting out}, want to know more about programming language @a[href: "http://www.plai.org/"]{applications} or @a[href: "http://redex.racket-lang.org/"]{models}, looking to -@a[href: "http://docs.racket-lang.org/continue/"]{expand your +@a[href: (docs-path "continue/")]{expand your horizons}, or ready to dive into @a[href: "learning.html"]{research}, Racket can help you become a better programmer and system builder.}} @@ -397,25 +397,25 @@ Racket can help you become a better programmer and system builder.}} @row{ @columns[5]{ @panetitle{For getting started} - @docelem['Quick "An Introduction to Racket with Pictures" "http://docs.racket-lang.org/quick/"]{ + @docelem['Quick "An Introduction to Racket with Pictures" (docs-path "quick/")]{ gives you a taste of Racket.} - @docelem['More "Systems Programming with Racket" "http://docs.racket-lang.org/more/"]{ + @docelem['More "Systems Programming with Racket" (docs-path "more/")]{ dives much deeper and much faster, showing how to build a complete continuation-based web server.} - @docelem['Guide "Racket" "http://docs.racket-lang.org/guide/"]{ + @docelem['Guide "Racket" (docs-path "guide/")]{ starts with a tutorial on Racket basics, and then it describes the rest of the Racket language.}} @columns[5 #:push 2]{ @panetitle{For experienced Racketeers} - @docelem['Reference "Racket" "http://docs.racket-lang.org/reference/"]{ + @docelem['Reference "Racket" (docs-path "reference/")]{ provides comprehensive coverage of all of Racket.} - @docelem['Continue "Web Applications in Racket" "http://docs.racket-lang.org/continue/"]{ + @docelem['Continue "Web Applications in Racket" (docs-path "continue/")]{ describes how to use the - Racket @a[href: "http://docs.racket-lang.org/web-server/"]{web + Racket @a[href: (docs-path "web-server/")]{web server} to build dynamic web applications.} - @docelem["Package Management" "Racket" "http://docs.racket-lang.org/pkg/"]{ + @docelem["Package Management" "Racket" (docs-path "pkg/")]{ explains how to install @a[href: "http://pkgs.racket-lang.org"]{packages}, and how to build and distribute your own.}} @@ -440,11 +440,8 @@ explains how to install @panetitle{Discussion} @p{@a[href: "http://lists.racket-lang.org/"]{Mailing lists} — Discussion lists for using and developing Racket.} -@p{@a[href: "http://racket-lang.org/irc-chat.html"]{IRC} — -Chat in the @tt[style: "background-color: #d8d8e8;"]{@big{@strong{#racket}}} channel on -@a[href: "http://freenode.net"]{@tt{freenode.net}} — An informal -discussion channel for all things related to Racket. -@a[href: "https://botbot.me/freenode/racket/"]{Browse the logs}.} +@p{@a[href: "http://racket-lang.org/irc-chat.html"]{IRC} — +@irc-content} @p{@people — The people behind Racket.} diff --git a/pkgs/plt-services/meta/new-web/www/irc.rkt b/pkgs/plt-services/meta/new-web/www/irc.rkt index d19703118a..d53503a247 100644 --- a/pkgs/plt-services/meta/new-web/www/irc.rkt +++ b/pkgs/plt-services/meta/new-web/www/irc.rkt @@ -2,6 +2,9 @@ (require "resources.rkt" plt-web/style) +(provide irc-content + irc-quick) + (define webchat-link "http://webchat.freenode.net?channels=racket&uio=OT10cnVlJjExPTIzNg6b") @@ -10,38 +13,12 @@ @columns[12 #:row? #t #:center? #t]{ @iframe[src: webchat-link width: "100%" height: "400"]}}) -(define log-header+footer - (lazy (regexp-split #rx"{{{BODY}}}" - (xml->string @page[#:site www-site - #:id 'browse-downloads - #:html-only #t - #:part-of 'community - "{{{BODY}}}"])))) -(define header @plain[#:site www-site - #:file "irc-logs/dummy/HEADER.html" #:newline #f - (car (force log-header+footer))]) -(define footer @plain[#:site www-site - #:file "irc-logs/dummy/README.html" #:newline #f - (cadr (force log-header+footer))]) +(define irc-content + @list{Chat in the @tt[style: "background-color: #d8d8e8;"]{@big{@strong{#racket}}} channel on +@a[href: "http://freenode.net"]{@tt{freenode.net}}, an informal +discussion channel for all things related to Racket, or +@a[href: "https://botbot.me/freenode/racket/"]{browse the logs}.}) -(provide irc-logs) -(define irc-logs - (let ([base "/home/scheme/irc-logs"]) - (define t (make-hash)) - (λ (type . text) - (hash-ref! t type (λ() (a href: (symlink #:site www-site - (format "~a/~a" base type) - (format "irc-logs/~a" type)) - text)))))) -(void (irc-logs ".htaccess")) - -(provide irc-quick) -(define (irc-quick) - (define (chan name) @TT{@big{@strong{#@name}}}) - @parlist[@strong{Discussion Channel} - @text{@irc-chat{Chat on IRC} in the @chan{racket} channel on - @a[href: "http://freenode.net"]{@tt{freenode.net}} — an informal - discussion channel for all things related to Racket. - (@irc-logs['racket]{Browse the logs}.) - There is also @chan{racket-dev} (@irc-logs['racket-dev]{logs}), a channel - for notification bots.}]) +(define irc-quick + @text{@parlist[@strong{IRC} + @irc-content]}) diff --git a/pkgs/plt-services/meta/new-web/www/resources.rkt b/pkgs/plt-services/meta/new-web/www/resources.rkt index 3728aabb07..dced7c369c 100644 --- a/pkgs/plt-services/meta/new-web/www/resources.rkt +++ b/pkgs/plt-services/meta/new-web/www/resources.rkt @@ -1,11 +1,12 @@ #lang plt-web -(require plt-web/style) +(require plt-web/style + "../testing.rkt") (provide www-site) (define www-site (site "www" - #:url "http://racket-lang.org/" + #:url (rewrite-for-testing "http://racket-lang.org/") #:navigation (list @a[href: (resource "stubs/pkgs/" #f)]{Packages}