forked from cadence/breezewiki
Compare commits
9 commits
6c5a4019cc
...
411ebb3ab6
Author | SHA1 | Date | |
---|---|---|---|
411ebb3ab6 | |||
d5f992b7d8 | |||
2277c53956 | |||
e8923d3f5c | |||
c9eba0b5c3 | |||
d345fb8ff4 | |||
b8a6c5198d | |||
0fed724604 | |||
3942350468 |
2 changed files with 14 additions and 7 deletions
|
@ -98,16 +98,19 @@
|
||||||
#:head-data head-data
|
#:head-data head-data
|
||||||
#:siteinfo (siteinfo-fetch wikiname)
|
#:siteinfo (siteinfo-fetch wikiname)
|
||||||
))
|
))
|
||||||
(define redirect-msg ((query-selector (attribute-selector 'class "redirectMsg") body)))
|
|
||||||
(define redirect-query-parameter (dict-ref (url-query (request-uri req)) 'redirect "yes"))
|
(define redirect-query-parameter (dict-ref (url-query (request-uri req)) 'redirect "yes"))
|
||||||
|
(define redirect-msg ((query-selector (attribute-selector 'class "redirectMsg") body)))
|
||||||
|
(define redirect-msg-a (if redirect-msg
|
||||||
|
((query-selector (λ (t a c) (eq? t 'a)) redirect-msg))
|
||||||
|
#f))
|
||||||
(define headers
|
(define headers
|
||||||
(build-headers
|
(build-headers
|
||||||
always-headers
|
always-headers
|
||||||
; redirect-query-parameter: only the string "no" is significant:
|
; redirect-query-parameter: only the string "no" is significant:
|
||||||
; https://github.com/Wikia/app/blob/fe60579a53f16816d65dad1644363160a63206a6/includes/Wiki.php#L367
|
; https://github.com/Wikia/app/blob/fe60579a53f16816d65dad1644363160a63206a6/includes/Wiki.php#L367
|
||||||
(when (and redirect-msg
|
(when (and redirect-msg-a
|
||||||
(not (equal? redirect-query-parameter "no")))
|
(not (equal? redirect-query-parameter "no")))
|
||||||
(let* ([dest (get-attribute 'href (bits->attributes ((query-selector (λ (t a c) (eq? t 'a)) redirect-msg))))]
|
(let* ([dest (get-attribute 'href (bits->attributes redirect-msg-a))]
|
||||||
[value (bytes-append #"0;url=" (string->bytes/utf-8 dest))])
|
[value (bytes-append #"0;url=" (string->bytes/utf-8 dest))])
|
||||||
(header #"Refresh" value)))))
|
(header #"Refresh" value)))))
|
||||||
(when (config-true? 'debug)
|
(when (config-true? 'debug)
|
||||||
|
@ -123,7 +126,8 @@
|
||||||
;; page not found on disk, perhaps it's a redirect? redirects are stored in the database
|
;; page not found on disk, perhaps it's a redirect? redirects are stored in the database
|
||||||
(var target (query-maybe-value* "select redirect from page where wikiname = ? and basename = ?" wikiname basename))
|
(var target (query-maybe-value* "select redirect from page where wikiname = ? and basename = ?" wikiname basename))
|
||||||
[target
|
[target
|
||||||
(generate-redirect (basename->name-for-query target))]
|
; don't url decode the target, or Category: pages will be interpreted as a protocol
|
||||||
|
(generate-redirect (format "/~a/wiki/~a" wikiname (regexp-replace* #rx"#" target "/")))]
|
||||||
|
|
||||||
;; breezewiki doesn't have the page archived, see if we can make a network request for it
|
;; breezewiki doesn't have the page archived, see if we can make a network request for it
|
||||||
[(not (config-true? 'feature_offline::only))
|
[(not (config-true? 'feature_offline::only))
|
||||||
|
|
|
@ -80,16 +80,19 @@
|
||||||
#:title title
|
#:title title
|
||||||
#:head-data head-data
|
#:head-data head-data
|
||||||
#:siteinfo siteinfo))
|
#:siteinfo siteinfo))
|
||||||
(define redirect-msg ((query-selector (attribute-selector 'class "redirectMsg") body)))
|
|
||||||
(define redirect-query-parameter (dict-ref (url-query (request-uri req)) 'redirect "yes"))
|
(define redirect-query-parameter (dict-ref (url-query (request-uri req)) 'redirect "yes"))
|
||||||
|
(define redirect-msg ((query-selector (attribute-selector 'class "redirectMsg") body)))
|
||||||
|
(define redirect-msg-a (if redirect-msg
|
||||||
|
((query-selector (λ (t a c) (eq? t 'a)) redirect-msg))
|
||||||
|
#f))
|
||||||
(define headers
|
(define headers
|
||||||
(build-headers
|
(build-headers
|
||||||
always-headers
|
always-headers
|
||||||
; redirect-query-parameter: only the string "no" is significant:
|
; redirect-query-parameter: only the string "no" is significant:
|
||||||
; https://github.com/Wikia/app/blob/fe60579a53f16816d65dad1644363160a63206a6/includes/Wiki.php#L367
|
; https://github.com/Wikia/app/blob/fe60579a53f16816d65dad1644363160a63206a6/includes/Wiki.php#L367
|
||||||
(when (and redirect-msg
|
(when (and redirect-msg-a
|
||||||
(not (equal? redirect-query-parameter "no")))
|
(not (equal? redirect-query-parameter "no")))
|
||||||
(let* ([dest (get-attribute 'href (bits->attributes ((query-selector (λ (t a c) (eq? t 'a)) redirect-msg))))]
|
(let* ([dest (get-attribute 'href (bits->attributes redirect-msg-a))]
|
||||||
[value (bytes-append #"0;url=" (string->bytes/utf-8 dest))])
|
[value (bytes-append #"0;url=" (string->bytes/utf-8 dest))])
|
||||||
(header #"Refresh" value)))))
|
(header #"Refresh" value)))))
|
||||||
(when (config-true? 'debug)
|
(when (config-true? 'debug)
|
||||||
|
|
Loading…
Reference in a new issue