Compare commits

..

6 commits

Author SHA1 Message Date
6c5a4019cc
Hide slideshows 2023-12-23 13:37:51 +11:00
ce773b059e
Fix scrolling to sections if a tab's hash coincides with one
ben10/wiki/Alien_X_(Classic)#Appearances
2023-12-23 13:37:51 +11:00
b60e000513
Prevent making duplicate history entries 2023-12-23 13:37:51 +11:00
d6b8e16e4f
Prevent linking to tabs with no IDs 2023-12-23 13:37:50 +11:00
cc9954832c
Add the ability to specify/open the last open tab in the URL 2023-12-23 13:37:50 +11:00
7e871ad0fd
Add better support for tabs
Some pages break without actual tab support, such as
https://breezewiki.com/ben10/wiki/Ultimatrix_(Original)#Modes

This change aims to work with old browsers (such as Firefox for Android 68)
and browsers with Javascript disabled (by showing all tab contents and hiding
the tab bar, i.e. how tabs work before this change).
2023-12-23 13:37:50 +11:00
2 changed files with 7 additions and 14 deletions

View file

@ -98,19 +98,16 @@
#:head-data head-data #:head-data head-data
#:siteinfo (siteinfo-fetch wikiname) #:siteinfo (siteinfo-fetch wikiname)
)) ))
(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 ((query-selector (attribute-selector 'class "redirectMsg") body)))
(define redirect-msg-a (if redirect-msg (define redirect-query-parameter (dict-ref (url-query (request-uri req)) 'redirect "yes"))
((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-a (when (and redirect-msg
(not (equal? redirect-query-parameter "no"))) (not (equal? redirect-query-parameter "no")))
(let* ([dest (get-attribute 'href (bits->attributes redirect-msg-a))] (let* ([dest (get-attribute 'href (bits->attributes ((query-selector (λ (t a c) (eq? t 'a)) redirect-msg))))]
[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)
@ -126,8 +123,7 @@
;; 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
; don't url decode the target, or Category: pages will be interpreted as a protocol (generate-redirect (basename->name-for-query target))]
(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))

View file

@ -80,19 +80,16 @@
#:title title #:title title
#:head-data head-data #:head-data head-data
#:siteinfo siteinfo)) #:siteinfo siteinfo))
(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 ((query-selector (attribute-selector 'class "redirectMsg") body)))
(define redirect-msg-a (if redirect-msg (define redirect-query-parameter (dict-ref (url-query (request-uri req)) 'redirect "yes"))
((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-a (when (and redirect-msg
(not (equal? redirect-query-parameter "no"))) (not (equal? redirect-query-parameter "no")))
(let* ([dest (get-attribute 'href (bits->attributes redirect-msg-a))] (let* ([dest (get-attribute 'href (bits->attributes ((query-selector (λ (t a c) (eq? t 'a)) redirect-msg))))]
[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)