user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 0/2] ensure user CSS always overrides BOFH CSS
  @ 2019-02-23 10:56  7% ` Eric Wong
  2019-02-23 10:56  6%   ` [PATCH 1/2] usercontent.pm: set "!important" to override BOFH prefs Eric Wong
  0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2019-02-23 10:56 UTC (permalink / raw)
  To: meta; +Cc: Dmitry Alexandrov, Mateusz Loskot

First, ensure our sample CSS includes "!important" to override
what the BOFH set.

Then, make sure BOFHs can't set "!important" to override
what users set in their private CSS files.

Thanks to Dmitry Alexandrov <321942@gmail.com> for noticing
this.

Eric Wong (2):
  usercontent.pm: set "!important" to override BOFH prefs
  www: prevent '!important' in BOFH-specified CSS

 lib/PublicInbox/UserContent.pm | 41 +++++++++++++++++++++-------------
 lib/PublicInbox/WWW.pm         | 12 ++++++++--
 2 files changed, 35 insertions(+), 18 deletions(-)

-- 
EW


^ permalink raw reply	[relevance 7%]

* [PATCH 1/2] usercontent.pm: set "!important" to override BOFH prefs
  2019-02-23 10:56  7% ` [PATCH 0/2] ensure user CSS always overrides BOFH CSS Eric Wong
@ 2019-02-23 10:56  6%   ` Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2019-02-23 10:56 UTC (permalink / raw)
  To: meta; +Cc: Dmitry Alexandrov, Mateusz Loskot

The sample userContent.css needs a higher priority than what
the BOFH specifies.  In other words, user preference must
ALWAYS take precedence.

Reported-by: Dmitry Alexandrov <321942@gmail.com>
cf. https://public-inbox.org/meta/87mumn4kx8.fsf@gmail.com/
---
 lib/PublicInbox/UserContent.pm | 41 +++++++++++++++++++++-------------
 1 file changed, 25 insertions(+), 16 deletions(-)

diff --git a/lib/PublicInbox/UserContent.pm b/lib/PublicInbox/UserContent.pm
index 468e6cf..5e57602 100644
--- a/lib/PublicInbox/UserContent.pm
+++ b/lib/PublicInbox/UserContent.pm
@@ -16,31 +16,31 @@ sub CSS () {
 	 * It reduces eyestrain for me, and energy usage for all:
 	 * https://en.wikipedia.org/wiki/Light-on-dark_color_scheme
 	 */
-	* { background:#000; color:#ccc }
+	* { background:#000 !important; color:#ccc !important }
 
 	/*
 	 * Underlined links add visual noise which make them hard-to-read.
 	 * Use colors to make them stand out, instead.
 	 */
-	a { color:#69f; text-decoration:none }
-	a:visited { color:#96f }
+	a { color:#69f !important; text-decoration:none !important }
+	a:visited { color:#96f !important }
 
-	/* quoted text gets a different color */
-	*.q { color:#09f }
+	/* quoted text in emails gets a different color */
+	*.q { color:#09f !important }
 
 	/*
-	 * these may be used with cgit, too
+	 * these may be used with cgit <https://git.zx2c4.com/cgit/>, too.
 	 * (cgit uses <div>, public-inbox uses <span>)
 	 */
-	*.add { color:#0ff }
-	*.del { color:#f0f }
-	*.head { color:#fff }
-	*.hunk { color:#c93 }
+	*.add { color:#0ff } /* diff post-image lines */
+	*.del { color:#f0f } /* diff pre-image lines */
+	*.head { color:#fff } /* diff header (metainformation) */
+	*.hunk { color:#c93 } /* diff hunk-header */
 
 	/*
 	 * highlight 3.x colors (tested 3.18) for displaying blobs.
-	 * This doesn't use most of the colors available (I find too many
-	 * colors overwhelming), so the #ccc default is commented out.
+	 * This doesn't use most of the colors available, as I find too
+	 * many colors overwhelming, so the default is commented out.
 	 */
 	.hl.num { color:#f30 } /* number */
 	.hl.esc { color:#f0f } /* escape character */
@@ -51,13 +51,15 @@ sub CSS () {
 	.hl.com { color:#09f } /* multi-line comment */
 	/* .hl.opt { color:#ccc } */ /* operator */
 	/* .hl.ipl { color:#ccc } */ /* interpolation */
-	/* .hl.lin { color:#ccc } */ /* line-number (unused by public-inbox) */
 
 	/* keyword groups kw[a-z] */
-	.hl.kwa { color:#ff0 }
-	.hl.kwb { color:#0f0 }
-	.hl.kwc { color:#ff0 }
+	.hl.kwa { color:#ff0 !important }
+	.hl.kwb { color:#0f0 !important }
+	.hl.kwc { color:#ff0 !important }
 	/* .hl.kwd { color:#ccc } */
+
+	/* line-number (unused by public-inbox) */
+	/* .hl.lin { color:#ccc } */
 _
 }
 # end of auto-updated sub
@@ -89,7 +91,14 @@ if (scalar(@ARGV) == 1 && -r __FILE__) {
 	use autodie;
 	open my $ro, '<', $ARGV[0];
 	my $css = do { local $/; <$ro> };
+
+	# indent one level:
 	$css =~ s/^([ \t]*\S)/\t$1/smg;
+
+	# "!important" overrides whatever the BOFH sets:
+	$css =~ s/;/ !important;/sg;
+	$css =~ s/(\w) \}$/$1 !important }/msg;
+
 	open my $rw, '+<', __FILE__;
 	my $out = do { local $/; <$rw> };
 	$out =~ s/^sub CSS.*^_\n\}/sub CSS () {\n\t<<'_'\n${css}_\n}/sm;
-- 
EW


^ permalink raw reply related	[relevance 6%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-02-23  2:47     Default theme Eric Wong
2019-02-23 10:56  7% ` [PATCH 0/2] ensure user CSS always overrides BOFH CSS Eric Wong
2019-02-23 10:56  6%   ` [PATCH 1/2] usercontent.pm: set "!important" to override BOFH prefs Eric Wong

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

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).