summaryrefslogtreecommitdiff
path: root/app/Models
diff options
context:
space:
mode:
authorGravatar Daniel Smith <daniel@rdnlsmith.com> 2026-02-08 17:11:46 -0500
committerGravatar Daniel Smith <daniel@rdnlsmith.com> 2026-02-08 17:11:46 -0500
commitaab52593acc2a96c772808b28daa18a366a310a9 (patch)
tree9481460f3a9920b00fe913d6a500a4d3d316b177 /app/Models
parentf65e6b1cf89bcc827e252dbdc806ad85a6b09f61 (diff)
Don’t break NetNewsWire’s footnote detection1.28.1-customcustom
If NetNewsWire detects that a link points to a footnote within the same post, then tapping on that link will produce a popover displaying the text of said footnote. Otherwise, it is treated as a regular link and opened in the default web browser. Detecting a footnote requires two things: 1. The link URL must consist only of a fragment (i.e. it begins with `#`). 2. There must exist another element (typically `<li>`) in the post’s HTML with an `id` attribute matching the fragment (that is, the text after `#`). Because FreshRSS’s web frontend can display multiple articles at once, all relative URLs (including bare fragments) are automatically converted to absolute URLs at ingestion time, and `id` attributes are replaced with `data-sanitized-id` attributes. These changes avoid conflicts in the web UI, but they break NNW’s footnote detection. Since I use FreshRSS solely as a backend service for NNW (and other clients), it is reasonable for me to disable those two sanitization steps in order to take full advantage of NNW’s features. Remove `id` from the list of attributes to rename, and add it to the list of allowed attributes for `<li>` elements (as otherwise, it would be stripped entirely). Convert the `absolutize_url()` function into a no-op if the relative URL provided appears to be a local fragment.
Diffstat (limited to 'app/Models')
-rw-r--r--app/Models/SimplePieCustom.php4
1 files changed, 2 insertions, 2 deletions
diff --git a/app/Models/SimplePieCustom.php b/app/Models/SimplePieCustom.php
index 44e5b030e..849b23a7b 100644
--- a/app/Models/SimplePieCustom.php
+++ b/app/Models/SimplePieCustom.php
@@ -47,7 +47,7 @@ final class FreshRSS_SimplePieCustom extends \SimplePie\SimplePie
$this->set_curl_options($curl_options);
$this->strip_comments(true);
- $this->rename_attributes(['id', 'class']);
+ $this->rename_attributes(['class']);
$this->allow_aria_attr(true);
$this->allow_data_attr(true);
$this->allowed_html_attributes([
@@ -121,7 +121,7 @@ final class FreshRSS_SimplePieCustom extends \SimplePie\SimplePie
'kbd' => [],
'label' => [],
'legend' => [],
- 'li' => ['value', 'type'],
+ 'li' => ['id', 'value', 'type'],
'main' => [],
// 'map' => [], // TODO: support <map> after rewriting ids with a format like #ugc-<insert original id here> (maybe)
'mark' => [],