Conversation
p/scripts/main.js
Outdated
| tmp_window.onafterprint = () => { | ||
| const isFirefoxMobile = navigator.userAgent.includes('Firefox') && navigator.userAgent.includes('Mobile'); | ||
| if (isFirefoxMobile) { | ||
| // Setting location.hash here crashes the tab on Firefox Mobile | ||
| return; | ||
| } | ||
| // Required for `mouseover` to trigger after print dialog is no longer open | ||
| location.hash = 'close'; | ||
| }; |
There was a problem hiding this comment.
The temporary document for printing is now in an <iframe> instead of a new tab
Perhaps this is one of those personal preference things but I'm not overly fond of that. I wasn't going to say anything because it didn't sound like a big deal, but um, well, these lines kind of speak for themselves. What is the reason for wanting to use an iframe exactly?
There was a problem hiding this comment.
well, these lines kind of speak for themselves
Sure having to check for the user agent is a bit ridiculous but it was a quick fix, if that's what you mean.
I'll try something else instead, maybe I don't have to set location.hash at all.
What is the reason for wanting to use an iframe exactly?
- The temporary document for printing is now in an
<iframe>instead of a new tab
So, the reason is I don't like that printing causes a new tab to be opened.
There was a problem hiding this comment.
Is this any better?
Lines 1294 to 1316 in 7790e64
There was a problem hiding this comment.
So, the reason is I don't like that printing causes a new tab to be opened.
Well sure, but I prefer a new tab to be opened for printing and I don't quite understand why you don't. :-) I'd much prefer it didn't automatically close! You don't even notice it opens a new tab and I think that's a bad thing. The print view is perfect to save as HTML too for example. Just a single line removal to get rid of the auto-close would make it much more user-friendly in that sense. The fact that save page as works in print preview in most browsers nowadays feels more like a fluke than something well thought out. And mind, after testing I realized save page doesn't save the print preview from an iframe but sticks to the parent page.
So from my perspective you have a lesser user experience at the cost of lower quality code with unnecessary hacks and complexities.
As a compromise, perhaps it should be separated into "print" and "show print view" or something to that effect. Though I've always thought auto-print but don't auto-close serves both purposes well enough. But given the code above I don't see any role for an iframe there, only a question of whether to auto-print and auto-close.
There was a problem hiding this comment.
Well sure, but I prefer a new tab to be opened for printing and I don't quite understand why you don't. :-)
The page that is currently being open for printing looks odd, because you can see a blank page behind the print dialog and the tab doesn't have a title.
The print view is perfect to save as HTML too for example
I didn't realize it's possible to do that in the print preview. I guess that makes opening a new tab a better option automatically.
Just a single line removal to get rid of the auto-close would make it much more user-friendly in that sense
I think that this should be configurable (as a matter of preference)
So from my perspective you have a lesser user experience at the cost of lower quality code with unnecessary hacks and complexities.
That's the worst part, it shouldn't be this hard to print from an iframe.
It's probably also not guaranteed that this will continue working after browser updates.
As a compromise, perhaps it should be separated into "print" and "show print view" or something to that effect. Though I've always thought auto-print but don't auto-close serves both purposes well enough. But given the code above I don't see any role for an iframe there, only a question of whether to auto-print and auto-close.
That's an option too, but maybe something like Save as HTML instead of show print view?
Also, for showing a print view, maybe it should just be a separate .phtml view instead of opening it with JS
There was a problem hiding this comment.
That's the worst part, it shouldn't be this hard to print from an iframe.
It does surprise me.
That's an option too, but maybe something like Save as HTML instead of show print view?
Possibly. I'd say the point is simply "show single article" (in clean print view) and what the user does is up to them, regardless if I've thought of it. Put another way, I wouldn't really want someone to optimize the saving by using blob for example, because then that's all you can do. Though granted, you could then do whatever you want with the resulting file so maybe it doesn't matter too much.
Also, for showing a print view, maybe it should just be a separate .phtml view instead of opening it with JS
No objections here, but overall I'm totally fine with JS as in this PR as well. More than that, it seems done to me, besides the minor iframe detail.
| @top-left { content: ''; } | ||
|
|
||
| @bottom-left { content: ''; } |
There was a problem hiding this comment.
How does this interact with RTL?
Edit: I see, it doesn't at the moment.
There was a problem hiding this comment.
Could you give an example?
There was a problem hiding this comment.
The .rtl stylesheet hasn't swapped left and right.
There was a problem hiding this comment.
Maybe just add @top-right here as well
There was a problem hiding this comment.
I don't think this changes anything but I added @top-right and @bottom-right
There was a problem hiding this comment.
Possibly
I do think it would be good to have it somewhere. But of course that needn't be the footer.
There was a problem hiding this comment.
Speaking of which all URLs should be made explicit really. It's really simple with generated content but then it'd have to be immediately behind all links. For something more advanced like footnotes you'd need JS or PHP.
Anyway, that's not for this PR (unless you want it to be, heh).
There was a problem hiding this comment.
Speaking of which all URLs should be made explicit really. It's really simple with generated content but then it'd have to be immediately behind all links. For something more advanced like footnotes you'd need JS or PHP.
For the print of the whole page we already have this:
(doesn't apply to the JS print dialog because it doesn't include .flux_content)
FreshRSS/p/themes/base-theme/frss.css
Lines 2827 to 2830 in e654033
But it looks awful, so it would have to be footnotes if anything.
Anyway, that's not for this PR (unless you want it to be, heh).
This is yet again something that should be configurable, as footnotes wouldn't be needed in PDFs for example since you can just click/hover on links.
Note that footnotes could conflict with the actual contents of the article.
There was a problem hiding this comment.
But it looks awful, so it would have to be footnotes if anything.
I think it looks reasonable enough for the most part. I prefer parentheses over square brackets though. And, well, not too fond of the italic really. I just mean the principle.
in PDFs for example since you can just click/hover on links.
Eh, that's debatable. It's one thing for navigational aids within the document but making it less useful when printed strikes me as somewhat besides the point.
There was a problem hiding this comment.
I think it looks reasonable enough for the most part. I prefer parentheses over square brackets though
I'm fine about going with this approach, but it needs to be configurable.
(turned off by default?)
|
For the record, I like to ensure basic support for SeaMonkey (seems to work, at a quick glance) |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [freshrss/freshrss](https://freshrss.org/) ([source](https://github.com/FreshRSS/FreshRSS)) | minor | `1.26.3` -> `1.27.0` | --- ### Release Notes <details> <summary>FreshRSS/FreshRSS (freshrss/freshrss)</summary> ### [`v1.27.0`](https://github.com/FreshRSS/FreshRSS/blob/HEAD/CHANGELOG.md#2025-08-18-FreshRSS-1270) [Compare Source](FreshRSS/FreshRSS@1.26.3...1.27.0) - Features - Implement support for HTTP `429 Too Many Requests` and `503 Service Unavailable`, obey `Retry-After` [#​7760](FreshRSS/FreshRSS#7760) - Add sort by category title, or by feed title [#​7702](FreshRSS/FreshRSS#7702) - Add search operator `c:` for categories like `c:23,34` or `!c:45,56` [#​7696](FreshRSS/FreshRSS#7696) - Custom feed favicons [#​7646](FreshRSS/FreshRSS#7646), [#​7704](FreshRSS/FreshRSS#7704), [#​7717](FreshRSS/FreshRSS#7717), [#​7792](FreshRSS/FreshRSS#7792) - Rework fetch favicons for fewer HTTP requests [#​7767](FreshRSS/FreshRSS#7767) - Add more unicity criteria based on title and/or content [#​7789](FreshRSS/FreshRSS#7789) - Automatically restore user configuration from backup [#​7682](FreshRSS/FreshRSS#7682) - API add support for states in `s` parameter of `streamId` [#​7695](FreshRSS/FreshRSS#7695) - Improve sharing via Print [#​7728](FreshRSS/FreshRSS#7728) - Redirect to the login page from bookmarklet instead of 403 [#​7782](FreshRSS/FreshRSS#7782) - Clean local cache more often, when refreshing feeds [#​7827](FreshRSS/FreshRSS#7827) - Security - Implement reauthentication (*sudo* mode) [#​7753](FreshRSS/FreshRSS#7753) - Add `Content-Security-Policy: frame-ancestors` [#​7677](FreshRSS/FreshRSS#7677) - Ensure CSP everywhere [#​7810](FreshRSS/FreshRSS#7810) - Show warning when unsafe CSP policy is in use [#​7804](FreshRSS/FreshRSS#7804) - Fix access rights when creating a new user [#​7783](FreshRSS/FreshRSS#7783) - Improve security of form for user details [#​7771](FreshRSS/FreshRSS#7771), [#​7786](FreshRSS/FreshRSS#7786) - Disallow setting non-existent theme [#​7722](FreshRSS/FreshRSS#7722) - Regenerate cookie ID after logging out [#​7762](FreshRSS/FreshRSS#7762) - Require current password when setting new password [#​7763](FreshRSS/FreshRSS#7763) - Add missing access checks for feed-related actions [#​7768](FreshRSS/FreshRSS#7768) - Strip more unsafe attributes such as `referrerpolicy`, `ping` [#​7770](FreshRSS/FreshRSS#7770) - Remove unneeded execution permissions [#​7802](FreshRSS/FreshRSS#7802) - Bug fixing - Fix redirections when scraping from HTML [#​7654](FreshRSS/FreshRSS#7654), [#​7741](FreshRSS/FreshRSS#7741) - Fix multiple authentication HTTP headers [#​7703](FreshRSS/FreshRSS#7703) - Fix HTML queries with a single feed [#​7730](FreshRSS/FreshRSS#7730) - WebSub: only perform a redirection when coming from WebSub [#​7738](FreshRSS/FreshRSS#7738) - Include enclosures in entries’ hash [#​7719](FreshRSS/FreshRSS#7719) - Negative side-effect: users of the option to *automatically mark updated articles as unread* will once have some articles with enclosures re-appear as unread - Fix cancellation of slider exit UI [#​7705](FreshRSS/FreshRSS#7705) - Honor *disable update* on update page [#​7733](FreshRSS/FreshRSS#7733) - Fix no registration limit setting [#​7751](FreshRSS/FreshRSS#7751) - Fix XML encoding of sharing functions [#​7822](FreshRSS/FreshRSS#7822) - SimplePie - Fix propagation of HTTP error codes [#​7670](FreshRSS/FreshRSS#7670) - Fix support for XML feeds with HTML entities [#​7689](FreshRSS/FreshRSS#7689), [simplepie#915](simplepie/simplepie#915) - Fix feeds encoded in UTF-16LE [#​7691](FreshRSS/FreshRSS#7691), [simplepie#916](simplepie/simplepie#916) - Various upstream contributions [simplepie#917](simplepie/simplepie#917), [simplepie#924](simplepie/simplepie#924), [simplepie#926](simplepie/simplepie#926), [simplepie#932](simplepie/simplepie#932), [simplepie#933](simplepie/simplepie#933) - Sync upstream [#​7706](FreshRSS/FreshRSS#7706), [FreshRSS/simplepie#45](FreshRSS/simplepie#45), [#​7775](FreshRSS/FreshRSS#7775), [FreshRSS/simplepie#50](FreshRSS/simplepie#50), [#​7824](FreshRSS/FreshRSS#7824), [#​7825](FreshRSS/FreshRSS#7825), - Fix regex *Backtrack limit was exhausted* in `clean_hash()` [#​7813](FreshRSS/FreshRSS#7813), [FreshRSS/simplepie#48](FreshRSS/simplepie#48) - Deployment - Docker default image (Debian 12 Bookworm) updated to PHP 8.2.29 [#​7805](FreshRSS/FreshRSS#7805) - Docker alternative image updated to Alpine 3.22 with PHP 8.4.11 and Apache 2.4.65 [#​7740](FreshRSS/FreshRSS#7740), [#​7740](FreshRSS/FreshRSS#7740), [#​7803](FreshRSS/FreshRSS#7803) - Start supporting PHP 8.5+ [#​7787](FreshRSS/FreshRSS#7787), [#​7826](FreshRSS/FreshRSS#7826) - Docker Alpine dev image `:newest` updated to PHP 8.5-alpha and Apache 2.4.65 [#​7773](FreshRSS/FreshRSS#7773) - Docker: interpolate `FRESHRSS_INSTALL` and `FRESHRSS_USER` variables [#​7725](FreshRSS/FreshRSS#7725) - Docker: Reduce how much data needs to be chown/chmod’ed on container startup [#​7793](FreshRSS/FreshRSS#7793) - Test for database PDO typing support during install (relevant for MySQL / MariaDB with obsolete driver) [#​7651](FreshRSS/FreshRSS#7651) - Extensions - Add API endpoint for extensions [#​7576](FreshRSS/FreshRSS#7576) - Expose the reading modes for extensions [#​7668](FreshRSS/FreshRSS#7668), [#​7688](FreshRSS/FreshRSS#7688) - New extension hook `before_login_btn` [#​7761](FreshRSS/FreshRSS#7761) - UI - Improve *mark as read* request showing popup due to `onbeforeunload` [#​7554](FreshRSS/FreshRSS#7554) - Fix lazy-loading for `<video poster="...">` and `<image>` [#​7636](FreshRSS/FreshRSS#7636) - Avoid styling `<code>` inside of `<pre>` [#​7797](FreshRSS/FreshRSS#7797) - Improve confirmation logic with `data-auto-leave-validation` [#​7785](FreshRSS/FreshRSS#7785) - Update `chart.js` to 4.5.0 [#​7752](FreshRSS/FreshRSS#7752), [#​7816](FreshRSS/FreshRSS#7816) - Various UI and style improvements: [#​7616](FreshRSS/FreshRSS#7616), [#​7811](FreshRSS/FreshRSS#7811) - I18n - Show translation status in README [#​7715](FreshRSS/FreshRSS#7715) - Improve Indonesian [#​7654](FreshRSS/FreshRSS#7654), [#​7721](FreshRSS/FreshRSS#7721) - Improve Persian [#​7795](FreshRSS/FreshRSS#7795) - Misc. - Improve PHP code [#​7642](FreshRSS/FreshRSS#7642), [#​7665](FreshRSS/FreshRSS#7665), [#​7761](FreshRSS/FreshRSS#7761), [#​7781](FreshRSS/FreshRSS#7781), [#​7794](FreshRSS/FreshRSS#7794) - Update dev dependencies [#​7708](FreshRSS/FreshRSS#7708), [#​7709](FreshRSS/FreshRSS#7709), [#​7710](FreshRSS/FreshRSS#7710), [#​7711](FreshRSS/FreshRSS#7711), [#​7776](FreshRSS/FreshRSS#7776), [#​7777](FreshRSS/FreshRSS#7777) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4zNS4wIiwidXBkYXRlZEluVmVyIjoiNDEuMzUuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/1253 Co-authored-by: Renovate Bot <[email protected]> Co-committed-by: Renovate Bot <[email protected]>
List of changes:
<iframe>instead of a new tab<head>element is copied to the temporary document, except for<script>tags to copy over the<meta>tags as well<details>is auto expanded<html>class is copied over to preserve some styling that might use those classescontent_el.innerHTMLto the temporary document,content_el.outerHTMLis now written instead to apply the styles that select.content.dropdown-menuis now hidden in the printed document, because it can't be expanded anywayprint()Tested on:
Known issues:
TODO: