diff --git a/pkgs/plt-services/meta/new-web/download/index.rkt b/pkgs/plt-services/meta/new-web/download/index.rkt index 7406a81a6c..4dc6663af5 100644 --- a/pkgs/plt-services/meta/new-web/download/index.rkt +++ b/pkgs/plt-services/meta/new-web/download/index.rkt @@ -1,6 +1,8 @@ #lang plt-web -(require "resources.rkt" "download-pages.rkt") +(require "resources.rkt" + "download-pages.rkt" + "../identity.rkt") (provide index) (define index @@ -8,3 +10,5 @@ #:link-title "Download" #:window-title "Download Racket" #:part-of 'download #:width 'full]{ @(render-download-page)}) + +(register-identity download-site) diff --git a/pkgs/plt-services/meta/new-web/download/resources.rkt b/pkgs/plt-services/meta/new-web/download/resources.rkt index a85d95d102..826a8983e0 100644 --- a/pkgs/plt-services/meta/new-web/download/resources.rkt +++ b/pkgs/plt-services/meta/new-web/download/resources.rkt @@ -1,7 +1,9 @@ #lang plt-web -(require "../testing.rkt") +(require "../testing.rkt" + "../identity.rkt") (provide download-site) (define download-site (site "download" - #:url (rewrite-for-testing "http://download.racket-lang.org/"))) + #:url (rewrite-for-testing "http://download.racket-lang.org/") + #:page-headers (identity-headers))) diff --git a/pkgs/plt-services/meta/new-web/identity.rkt b/pkgs/plt-services/meta/new-web/identity.rkt new file mode 100644 index 0000000000..dd11140017 --- /dev/null +++ b/pkgs/plt-services/meta/new-web/identity.rkt @@ -0,0 +1,28 @@ +#lang plt-web + +(provide identity-headers + register-identity) + +;; Include the returned header in `#:page-headers` for each site: +(define (identity-headers) + (list + @script{ + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-48767493-1', 'racket-lang.org'); + ga('send', 'pageview'); + })) + +;; Call this function for each site: +(define (register-identity site) + ;; the following resources are not used directly, so their names are + ;; irrelevant + @plain[#:site site #:file "google5b2dc47c0b1b15cb.html"]{ + google-site-verification: google5b2dc47c0b1b15cb.html} + @plain[#:site site #:file "BingSiteAuth.xml"]{ + + 140BE58EEC31CB97382E1016E21C405A} + (void)) diff --git a/pkgs/plt-services/meta/new-web/minis/drracket.rkt b/pkgs/plt-services/meta/new-web/minis/drracket.rkt index 1e3dc20100..d4eed3f711 100644 --- a/pkgs/plt-services/meta/new-web/minis/drracket.rkt +++ b/pkgs/plt-services/meta/new-web/minis/drracket.rkt @@ -1,10 +1,12 @@ #lang plt-web -(require "../www/resources.rkt") +(require "../www/resources.rkt" + "../identity.rkt") (define drracket-site (site "drracket" #:url "http://drracket.org/" #:share-from www-site + #:page-headers (identity-headers) #:page-style? #f #:meta? #t)) @@ -12,6 +14,8 @@ ;; to Can Burak Cilingir for both the logo and the drracket.org domain ;; name. +(register-identity drracket-site) + (define index (page #:site drracket-site #:title "DrRacket" #:extra-headers (lazy headers) (center-div logo))) diff --git a/pkgs/plt-services/meta/new-web/minis/pre.rkt b/pkgs/plt-services/meta/new-web/minis/pre.rkt index 4b34266ad7..29c4a9ad33 100644 --- a/pkgs/plt-services/meta/new-web/minis/pre.rkt +++ b/pkgs/plt-services/meta/new-web/minis/pre.rkt @@ -1,14 +1,18 @@ #lang plt-web (require "../www/resources.rkt" "../testing.rkt" + "../identity.rkt" plt-web/style) (provide installers) (define pre-site (site "pre" #:url (rewrite-for-testing "http://pre.racket-lang.org/") + #:page-headers (identity-headers) #:share-from www-site)) +(register-identity pre-site) + (define (main id) @page[#:site pre-site #:id id diff --git a/pkgs/plt-services/meta/new-web/rcon/all.rkt b/pkgs/plt-services/meta/new-web/rcon/all.rkt index 44a0592d9d..7230062353 100644 --- a/pkgs/plt-services/meta/new-web/rcon/all.rkt +++ b/pkgs/plt-services/meta/new-web/rcon/all.rkt @@ -3,12 +3,15 @@ (require plt-web/style "resources.rkt" "utils.rkt" + "../identity.rkt" (prefix-in 2011: "2011/all.rkt") (prefix-in 2012: "2012/all.rkt") (prefix-in 2013: "2013/all.rkt")) (provide index) +(register-identity con-site) + (define index @page[#:site con-site #:link-title "RacketCon" #:title "RacketCon" diff --git a/pkgs/plt-services/meta/new-web/rcon/resources.rkt b/pkgs/plt-services/meta/new-web/rcon/resources.rkt index 4dc4aaa06f..641986fbb8 100644 --- a/pkgs/plt-services/meta/new-web/rcon/resources.rkt +++ b/pkgs/plt-services/meta/new-web/rcon/resources.rkt @@ -1,5 +1,6 @@ #lang plt-web (require "../www/resources.rkt" + "../identity.rkt" "../testing.rkt") (provide con-site @@ -8,6 +9,7 @@ (define con-site (site "con" #:url (rewrite-for-testing "http://con.racket-lang.org/") + #:page-headers (identity-headers) #:share-from www-site)) (define (rcon [year #f] . text) diff --git a/pkgs/plt-services/meta/new-web/www/index.rkt b/pkgs/plt-services/meta/new-web/www/index.rkt index 1622098c4a..ce4d1ceae4 100644 --- a/pkgs/plt-services/meta/new-web/www/index.rkt +++ b/pkgs/plt-services/meta/new-web/www/index.rkt @@ -4,7 +4,9 @@ "irc.rkt" (prefix-in pre: "../minis/pre.rkt") (only-in "../stubs/docs.rkt" docs-path) - (only-in "../rcon/resources.rkt" rcon)) + (only-in "../rcon/resources.rkt" rcon) + "../identity.rkt" + (only-in "../stubs/pkgs.rkt")) ;; TODO ;; -- add links in top paragraph @@ -15,6 +17,8 @@ (require "resources.rkt" "code.rkt" "download.rkt" "learning.rkt" "people.rkt" "community.rkt") +(register-identity www-site) + (define-runtime-path img-dir "img") (define-runtime-path js-dir "js") (define-runtime-path css-dir "css") diff --git a/pkgs/plt-services/meta/new-web/www/resources.rkt b/pkgs/plt-services/meta/new-web/www/resources.rkt index 974da12cdc..63ca2af1b9 100644 --- a/pkgs/plt-services/meta/new-web/www/resources.rkt +++ b/pkgs/plt-services/meta/new-web/www/resources.rkt @@ -1,5 +1,6 @@ #lang plt-web (require plt-web/style + "../identity.rkt" "../testing.rkt") (provide www-site) @@ -7,6 +8,7 @@ (define www-site (site "www" #:url (rewrite-for-testing "http://www.racket-lang.org/") + #:page-headers (identity-headers) #:navigation (list @a[href: (resource "stubs/pkgs/" #f)]{Packages} diff --git a/pkgs/plt-web-pkgs/plt-web-doc/plt-web.scrbl b/pkgs/plt-web-pkgs/plt-web-doc/plt-web.scrbl index 18aa7bf5d6..07158a9702 100644 --- a/pkgs/plt-web-pkgs/plt-web-doc/plt-web.scrbl +++ b/pkgs/plt-web-pkgs/plt-web-doc/plt-web.scrbl @@ -38,6 +38,7 @@ relative directory is mapped to a destination URL via [#:always-abs-url? always-abs-url? any/c #t] [#:share-from share-from (or/c site? #f) #f] [#:page-style? page-style? any/c #t] + [#:page-headers page-headers outputable/c null] [#:meta? meta? any/c page-style?] [#:robots robots (or/c #f #t outputable/c) #t] [#:htaccess htaccess (or/c #f #t outputable/c) #t] @@ -65,6 +66,9 @@ include content to set the style of the overall page. Otherwise, only sufficient resources and content are included to specify the style of the PLT web-page header (i.e., a bar with the Racket logo). +The @racket[page-headers] argument provides content for the header of +any HTML page generated at the site via @racket[page] or @racket[page*]. + If @racket[meta?] is true, then @filepath{.htaccess}, @filepath{robots.txt}, and similar files are generated for the site. The @racket[robots] and @racket[htaccess] arguments determine robot diff --git a/pkgs/plt-web-pkgs/plt-web-lib/layout.rkt b/pkgs/plt-web-pkgs/plt-web-lib/layout.rkt index 448fd50ecb..a8554b13ef 100644 --- a/pkgs/plt-web-pkgs/plt-web-lib/layout.rkt +++ b/pkgs/plt-web-pkgs/plt-web-lib/layout.rkt @@ -223,7 +223,7 @@ null) }) -(define (make-resources files navigation page-style? sharing-site) +(define (make-resources files navigation page-style? extra-headers sharing-site) (define (recur/share what) (if sharing-site ((site-resources sharing-site) what) @@ -253,7 +253,7 @@ [sharing-site (recur/share what)] [else (error 'resource "unknown resource: ~e" what)])])) (define icon-headers (html-icon-headers (resources 'icon-path))) - (define headers (html-headers resources icon-headers page-style?)) + (define headers (list (html-headers resources icon-headers page-style?) extra-headers)) (define make-navbar (navbar-maker (resources 'logo-path) navigation page-style?)) (define make-navbar-content (navbar-content (resources 'logo-path) navigation page-style?)) (define preamble (cons @doctype['html] @@ -280,6 +280,7 @@ #:robots [robots #t] #:htaccess [htaccess #t] #:navigation [navigation null] + #:page-headers [headers null] #:page-style? [page-style? #t] #:meta? [meta? page-style?] #:share-from [given-sharing-site #f]) @@ -304,12 +305,13 @@ #:site the-site content)) dir robots htaccess - page-style? + page-style? meta? (and sharing-site #t)) navigation page-style? + headers sharing-site)))) the-site)]) site)) diff --git a/pkgs/plt-web-pkgs/plt-web-lib/resources.rkt b/pkgs/plt-web-pkgs/plt-web-lib/resources.rkt index 8121ac0c6d..844696916d 100644 --- a/pkgs/plt-web-pkgs/plt-web-lib/resources.rkt +++ b/pkgs/plt-web-pkgs/plt-web-lib/resources.rkt @@ -59,13 +59,6 @@ null) ,@(if meta? (list - ;; the following resources are not used directly, so their names are - ;; irrelevant - @writefile["google5b2dc47c0b1b15cb.html"]{ - google-site-verification: google5b2dc47c0b1b15cb.html} - @writefile["BingSiteAuth.xml"]{ - - 140BE58EEC31CB97382E1016E21C405A} ;; #t (the default) => no-op file, good to avoid error-log lines (let* ([t (if (eq? #t robots) "Disallow:" robots)] [t (and t (list "User-agent: *\n" t))])