]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www: stop generating /$MESSAGE_ID/f/ links
authorEric Wong <e@80x24.org>
Wed, 13 Apr 2016 03:04:11 +0000 (03:04 +0000)
committerEric Wong <e@80x24.org>
Wed, 13 Apr 2016 03:04:41 +0000 (03:04 +0000)
Quote-folding can be detrimental as it fails to hide the
real problem of over-quoting.

Over-quoting wastes bandwidth and space for all readers, not
just WWW readers of the public-inbox.  So hopefully removing
quote-folding support from the WWW interface can shame those
repliers into quoting only relevant portions of what they reply
to.

Documentation/design_www.txt
lib/PublicInbox/Feed.pm
lib/PublicInbox/View.pm
t/feed.t
t/view.t

index 1be4d18e28e1602dc0ae8d13032560fec3c25cb2..980b2eab590073e5a9d61d6e432576e810eb1d33 100644 (file)
@@ -11,13 +11,13 @@ URL naming
 /$LISTNAME/$MESSAGE_ID/t.mbox.gz          -> gzipped mbox of thread
 
 ### Stable endpoints
-/$LISTNAME/$MESSAGE_ID/                   -> HTML content (short quotes)
+/$LISTNAME/$MESSAGE_ID/                   -> HTML content
 /$LISTNAME/$MESSAGE_ID                    -> 301 to /$LISTNAME/$MESSAGE_ID
 /$LISTNAME/$MESSAGE_ID/raw                -> raw mbox
-/$LISTNAME/$MESSAGE_ID/f/                 -> HTML content (full quotes)
 /$LISTNAME/$MESSAGE_ID/R/                 -> HTML reply instructions
 
 ### Legacy endpoints (may be ambiguous given Message-IDs with similar suffixes)
+/$LISTNAME/$MESSAGE_ID/f/                 -> HTML content
 /$LISTNAME/m/$MESSAGE_ID/                 -> 301 to /$LISTNAME/$MESSAGE_ID/
 /$LISTNAME/m/$MESSAGE_ID.html             -> 301 to /$LISTNAME/$MESSAGE_ID/
 /$LISTNAME/m/$MESSAGE_ID.txt              -> 301 to /$LISTNAME/$MESSAGE_ID/raw
index 54fa6e5de6d389775d0297873fdda36a1c3aff20..096bff9d5c10c3850d1ba7bbb2c3329e487639de 100644 (file)
@@ -316,7 +316,7 @@ sub add_to_feed {
        defined $mid or return 0;
        $mid = PublicInbox::Hval->new_msgid($mid);
        my $href = $mid->as_href;
-       my $content = PublicInbox::View->feed_entry($mime, "$midurl$href/f/");
+       my $content = PublicInbox::View->feed_entry($mime);
        defined($content) or return 0;
        $mime = undef;
 
index 2f718b709051123f0df9034a9713871b88c4976a..77b42b207f1ec04aa34ce703a5f20a40ef86740b 100644 (file)
@@ -135,17 +135,11 @@ sub index_entry {
        my $fh = $state->{fh};
        $fh->write($rv .= "- $from @ $ts UTC (<a\nhref=\"$txt\">raw</a>)\n\n");
 
-       my $fhref;
        my $mhref = "${path}$href/";
 
-       # show full message if it's our root message
-       my $neq = $root_anchor ne $id;
-       if ($neq || ($neq && $level != 0 && !$ctx->{flat})) {
-               $fhref = "${path}$href/f/";
-       }
        # scan through all parts, looking for displayable text
        $mime->walk_parts(sub {
-               index_walk($fh, $_[0], $enc, \$part_nr, $fhref);
+               index_walk($fh, $_[0], $enc, \$part_nr);
        });
        $mime->body_set('');
        $rv = "\n" . html_footer($hdr, 0, undef, $ctx, $mhref);
@@ -231,8 +225,8 @@ sub emit_thread_html {
 }
 
 sub index_walk {
-       my ($fh, $part, $enc, $part_nr, $fhref) = @_;
-       my $s = add_text_body($enc, $part, $part_nr, $fhref, 1);
+       my ($fh, $part, $enc, $part_nr) = @_;
+       my $s = add_text_body($enc, $part, $part_nr, 1);
 
        return if $s eq '';
 
@@ -264,7 +258,7 @@ sub multipart_text_as_html {
        # scan through all parts, looking for displayable text
        $mime->walk_parts(sub {
                my ($part) = @_;
-               $part = add_text_body($enc, $part, \$part_nr, $full_pfx, 1);
+               $part = add_text_body($enc, $part, \$part_nr, 1);
                $rv .= $part;
                $rv .= "\n" if $part ne '';
        });
@@ -283,55 +277,21 @@ sub add_filename_line {
 }
 
 sub flush_quote {
-       my ($quot, $n, $part_nr, $full_pfx, $final, $do_anchor) = @_;
-
-       # n.b.: do not use <blockquote> since it screws up alignment
-       # w.r.t. unquoted text.  Repliers may rely on pre-formatted
-       # alignment to point out a certain word in quoted text.
-       if ($full_pfx) {
-               if (!$final && scalar(@$quot) <= MAX_INLINE_QUOTED) {
-                       # show quote inline
-                       my $l = PublicInbox::Linkify->new;
-                       my $rv = join('', map { $l->linkify_1($_) } @$quot);
-                       @$quot = ();
-                       $rv = ascii_html($rv);
-                       return $l->linkify_2($rv);
-               }
+       my ($quot, $n, $part_nr, $final, $do_anchor) = @_;
 
-               # show a short snippet of quoted text and link to full version:
-               @$quot = map { s/^(?:>\s*)+//gm; $_ } @$quot;
-               my $cur = join(' ', @$quot);
-               @$quot = split(/\s+/, $cur);
-               $cur = '';
-               do {
-                       my $tmp = shift(@$quot);
-                       my $len = length($tmp) + length($cur);
-                       if ($len > MAX_TRUNC_LEN) {
-                               @$quot = ();
-                       } else {
-                               $cur .= $tmp . ' ';
-                       }
-               } while (@$quot && length($cur) < MAX_TRUNC_LEN);
-               @$quot = ();
-               $cur =~ s/ \z/ .../s;
-               $cur = ascii_html($cur);
-               my $nr = ++$$n;
-               "&gt; [<a\nhref=\"$full_pfx#q${part_nr}_$nr\">$cur</a>]\n";
-       } else {
-               # show everything in the full version with anchor from
-               # short version (see above)
-               my $l = PublicInbox::Linkify->new;
-               my $rv .= join('', map { $l->linkify_1($_) } @$quot);
-               @$quot = ();
-               $rv = ascii_html($rv);
-               return $l->linkify_2($rv) unless $do_anchor;
-               my $nr = ++$$n;
-               "<a\nid=q${part_nr}_$nr></a>" . $l->linkify_2($rv);
-       }
+       # show everything in the full version with anchor from
+       # short version (see above)
+       my $l = PublicInbox::Linkify->new;
+       my $rv .= join('', map { $l->linkify_1($_) } @$quot);
+       @$quot = ();
+       $rv = ascii_html($rv);
+       return $l->linkify_2($rv) unless $do_anchor;
+       my $nr = ++$$n;
+       qq(<a\nid="q${part_nr}_$nr"></a>) . $l->linkify_2($rv);
 }
 
 sub add_text_body {
-       my ($enc_msg, $part, $part_nr, $full_pfx, $do_anchor) = @_;
+       my ($enc_msg, $part, $part_nr, $do_anchor) = @_;
        return '' if $part->subparts;
 
        my $ct = $part->content_type;
@@ -361,7 +321,7 @@ sub add_text_body {
                        # show the previously buffered quote inline
                        if (scalar @quot) {
                                $s .= flush_quote(\@quot, \$n, $$part_nr,
-                                                 $full_pfx, 0, $do_anchor);
+                                                 0, $do_anchor);
                        }
 
                        # regular line, OK
@@ -374,8 +334,7 @@ sub add_text_body {
                }
        }
        if (scalar @quot) {
-               $s .= flush_quote(\@quot, \$n, $$part_nr, $full_pfx, 1,
-                                 $do_anchor);
+               $s .= flush_quote(\@quot, \$n, $$part_nr, 1, $do_anchor);
        }
        ++$$part_nr;
 
index 73b7d0bb2382e0c59d3bc5a98cd3c819cfc956dc..2096b73ef403c5e20656cafc0a000fb597a8e3d9 100644 (file)
--- a/t/feed.t
+++ b/t/feed.t
@@ -76,9 +76,7 @@ EOF
                                "id is set to default");
                }
 
-               unlike($feed, qr/drop me/, "long quoted text dropped");
-               like($feed, qr!/\d%40example\.com/f/#q!,
-                       "/f/ url generated for long quoted text");
+               like($feed, qr/drop me/, "long quoted text kept");
                like($feed, qr/inline me here/, "short quoted text kept");
                like($feed, qr/keep me/, "unquoted text saved");
        }
index 568ab303bced22347d6e1b6ee26e2b0c096a0829..2da741a87931c69e2c9282703829a6b4dc8c8186 100644 (file)
--- a/t/view.t
+++ b/t/view.t
@@ -49,18 +49,6 @@ EOF
        like($html, qr/&gt; keep this inline/, "short quoted text is inline");
        like($html, qr/<a\nid=[^>]+><\/a>&gt; Long and wordy/,
                "long quoted text is anchored");
-
-       # short page
-       my $pfx = "../hello%40example.com/f/";
-       $mime = Email::MIME->new($s);
-       my $short = PublicInbox::View::msg_html(undef, $mime, $pfx);
-       like($short, qr!<a\nhref="\.\./hello%40example\.com/f/!s,
-               "MID link present");
-       like($short, qr/\n&gt; keep this inline/,
-               "short quoted text is inline");
-       like($short, qr/<a\nhref="\Q$pfx\E#[^>]+>Long and wordy/,
-               "long quoted text is made into a link");
-       ok(length($short) < length($html), "short page is shorter");
 }
 
 # multipart crap