* Bug: wwwlisting doesn't get css styling
@ 2021-08-17 14:53 Konstantin Ryabitsev
2021-08-18 11:41 ` [RFC] wwwlisting: support global CSS in HTML view Eric Wong
0 siblings, 1 reply; 4+ messages in thread
From: Konstantin Ryabitsev @ 2021-08-17 14:53 UTC (permalink / raw)
To: meta
Hello:
Just noticed that the wwwlisting page doesn't apply any css stylesheets
(currently still on https://x-lore.kernel.org/lists.html ). It should do the
same thing as any other page view, e.g. so it can properly respect the client
prefers-color-scheme choices.
-K
^ permalink raw reply [flat|nested] 4+ messages in thread
* [RFC] wwwlisting: support global CSS in HTML view
2021-08-17 14:53 Bug: wwwlisting doesn't get css styling Konstantin Ryabitsev
@ 2021-08-18 11:41 ` Eric Wong
2021-08-26 12:36 ` Eric Wong
0 siblings, 1 reply; 4+ messages in thread
From: Eric Wong @ 2021-08-18 11:41 UTC (permalink / raw)
To: Konstantin Ryabitsev; +Cc: meta
Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> Hello:
>
> Just noticed that the wwwlisting page doesn't apply any css stylesheets
> (currently still on https://x-lore.kernel.org/lists.html ). It should do the
> same thing as any other page view, e.g. so it can properly respect the client
> prefers-color-scheme choices.
Ah, I intended /$INBOX/$FOO.css to be easily overridable on a
per-inbox basis so different inboxes could have different color
schemes for ease-of-identification.
Maybe "/+/" (as in "/+/$FOO.css") is a good URL path prefix...
----------8<--------
Subject: [PATCH] wwwlisting: support global CSS in HTML view
Since CSS can be overridden by a static webserver on a per-inbox
basis, we need a similar pattern to deal with the instance-wide
WwwListing HTML. "/+/" probably won't conflict with any current
nor future public inbox names.
I don't think it'll cause problems with common linkifiers or URL
extractors, either (and it's unlikely anybody would want to
share URLs of just the CSS in a plain text(-like) format).
---
lib/PublicInbox/WWW.pm | 13 ++++++++-----
lib/PublicInbox/WwwListing.pm | 6 +++---
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 841a7e85..1afdece0 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -133,7 +133,8 @@ sub call {
# convenience redirects order matters
} elsif ($path_info =~ m!$INBOX_RE/([^/]{2,})\z!o) {
r301($ctx, $1, $2);
-
+ } elsif ($path_info =~ m!\A/\+/([a-zA-Z0-9_\-\.]+)\.css\z!) {
+ get_css($ctx, undef, $1); # for WwwListing
} else {
legacy_redirects($ctx, $path_info);
}
@@ -627,18 +628,20 @@ sub style {
};
}
-# /$INBOX/$KEY.css endpoint
+# /$INBOX/$KEY.css and /+/$KEY.css endpoints
# CSS is configured globally for all inboxes, but we access them on
# a per-inbox basis. This allows administrators to setup per-inbox
# static routes to intercept the request before it hits PSGI
+# inbox == undef => top-level WwwListing
sub get_css ($$$) {
my ($ctx, $inbox, $key) = @_;
- my $r404 = invalid_inbox($ctx, $inbox);
+ my $r404 = defined($inbox) ? invalid_inbox($ctx, $inbox) : undef;
return $r404 if $r404;
my $self = $ctx->{www};
- my $css_map = $self->{-css_map} || stylesheets_prepare($self, '');
+ my $css_map = $self->{-css_map} ||
+ stylesheets_prepare($self, defined($inbox) ? '' : '+/');
my $css = $css_map->{$key};
- if (!defined($css) && $key eq 'userContent') {
+ if (!defined($css) && defined($inbox) && $key eq 'userContent') {
my $env = $ctx->{env};
$css = PublicInbox::UserContent::sample($ctx->{ibx}, $env);
}
diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm
index 98a69986..a31aa4ca 100644
--- a/lib/PublicInbox/WwwListing.pm
+++ b/lib/PublicInbox/WwwListing.pm
@@ -190,9 +190,9 @@ sub psgi_triple {
my $h = [ 'Content-Type', 'text/html; charset=UTF-8',
'Content-Length', undef ];
my $gzf = gzf_maybe($h, $ctx->{env});
- $gzf->zmore('<html><head><title>' .
- 'public-inbox listing</title>' .
- '</head><body>');
+ $gzf->zmore('<html><head><title>public-inbox listing</title>' .
+ $ctx->{www}->style('+/') .
+ '</head><body>');
my $code = 404;
if (my $list = delete $ctx->{-list}) {
my $mset = delete $ctx->{-mset};
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [RFC] wwwlisting: support global CSS in HTML view
2021-08-18 11:41 ` [RFC] wwwlisting: support global CSS in HTML view Eric Wong
@ 2021-08-26 12:36 ` Eric Wong
2021-08-26 13:51 ` Konstantin Ryabitsev
0 siblings, 1 reply; 4+ messages in thread
From: Eric Wong @ 2021-08-26 12:36 UTC (permalink / raw)
To: Konstantin Ryabitsev; +Cc: meta
Eric Wong <e@80x24.org> wrote:
> Maybe "/+/" (as in "/+/$FOO.css") is a good URL path prefix...
Pushed as commit 26c635060dcae35feae836b02a18a6a11e408312
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC] wwwlisting: support global CSS in HTML view
2021-08-26 12:36 ` Eric Wong
@ 2021-08-26 13:51 ` Konstantin Ryabitsev
0 siblings, 0 replies; 4+ messages in thread
From: Konstantin Ryabitsev @ 2021-08-26 13:51 UTC (permalink / raw)
To: Eric Wong; +Cc: meta
On Thu, Aug 26, 2021 at 12:36:06PM +0000, Eric Wong wrote:
> Eric Wong <e@80x24.org> wrote:
> > Maybe "/+/" (as in "/+/$FOO.css") is a good URL path prefix...
>
> Pushed as commit 26c635060dcae35feae836b02a18a6a11e408312
It looks good to me, thanks!
-K
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-08-26 13:51 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-17 14:53 Bug: wwwlisting doesn't get css styling Konstantin Ryabitsev
2021-08-18 11:41 ` [RFC] wwwlisting: support global CSS in HTML view Eric Wong
2021-08-26 12:36 ` Eric Wong
2021-08-26 13:51 ` Konstantin Ryabitsev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).