$header{content_type} = 'text/html; charset=utf-8';
sub stylesheet {
- my ($avail) = @_;
- my @avail = ref $avail eq 'ARRAY' ? @{$avail} : $avail or return;
+ my @avail = qw( light dark circus mono red );
my %styles = map {$_ => $_} @avail;
if (defined( my $setstyle = $get{style} )) {
} or warn "Unable to create style cookie: $@";
}
- $style ||= exists $cookie{style} && $styles{ $cookie{style} } || $avail[0];
-
- return map { sprintf(
- '<link rel="%s" type="text/css" media="all" href="%s" title="%s">',
- $_ eq $style ? 'stylesheet' : 'alternate stylesheet', "/$_.css?1.14", $_
- ) } @avail;
+ my $setstyle = $style;
+ $style ||= $styles{$_} for $cookie{style} || ();
+ $style ||= $avail[0];
+ return $setstyle;
}
sub checkmodified {
local $/; # slurp
return JSON::decode_json(readline $cache);
};
- if ($! or $@ or !@data or !$data[0]) {
+ if ($@ or !@data or !$data[0]) {
die ['Table data not found', $@ || $!];
}
if (@data == 1 and ref $data[0] eq 'HASH' and not %{$data[0]}) {
}
# default fallbacks
- $meta->{stylesheet} ||= [qw( light dark circus mono red )];
$meta->{charset} ||= 'utf-8';
$meta->{lang} ||= 'en';
$header{content_type} = "text/html; charset=$meta->{charset}"
unless $PLP::sentheaders;
exit if $ENV{REQUEST_METHOD} eq 'HEAD';
- unshift @{ $meta->{raw} }, stylesheet($meta->{stylesheet});
- push @{ $meta->{raw} }, (
- '<link rel="stylesheet" type="text/css" media="monochrome" href="/mono.css?1.11" title="light">',
+ unshift @{ $meta->{raw} }, (
+ '<link rel="stylesheet" type="text/css" media="all" href="/light.css?1.20">',
);
+ $meta->{stylesheet} = stylesheet();
if (my $img = $meta->{image}) {
my $proto = sprintf('http%s://', !!$ENV{HTTPS} && 's');
my ($file) = $ENV{SCRIPT_FILENAME} =~ m{ ([^/]+) \.plp$ }x;
- if (my $url = $meta->{canonical} // "/$file/$Request") {
+ $meta->{canonical} //= "/$file" . ($Request ne '' && "/$Request");
+ if (my $url = $meta->{canonical}) {
$url = "https://sheet.shiar.nl$url";
push @{ $meta->{raw} }, qq(<link rel="canonical" href="$url" />);
}
PLP_START {
# leading output
say '<!DOCTYPE html>';
- say qq(<html lang="$meta->{lang}">);
+ my $rootattr = '';
+ $rootattr .= qq( class="s-$_") for $meta->{stylesheet} || ();
+ say qq(<html lang="$meta->{lang}"$rootattr>);
say '';
say '<head>';
say sprintf '<meta http-equiv="content-type" content="%s">', $_
say '<link rel="icon" type="image/png" href="/clip.png">';
say for map { @{$_} } $meta->{raw} || ();
say '<meta name="robots" content="noindex">' if $Dev;
+ say '<script src="/prefer.js"></script>';
say '</head>';
say '';
say sprintf '<body id="%s">', $file;