0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-11 02:59:07 +08:00
discourse/plugins
Régis Hanol 4fc1144521
UX: Redesign the RSS Polling admin interface (#40790)
Previously, the RSS Polling plugin's admin page predated Discourse's
admin interface guidelines: it was a single inline-editable table with
no breadcrumbs or page header, it truncated long feed URLs, it required
horizontal scrolling on mobile, and it gave admins no way to verify a
feed before saving it.

This change rebuilds the page on the standard plugin "show route"
structure (breadcrumbs, page header, and Settings + Feeds tabs) with a
`d-table` feed list and dedicated FormKit new/edit routes, so the UI now
matches the rest of the admin interface and works on mobile. It also:

- Adds a **Test feed** dry-run that fetches a feed and previews which
items would be imported or skipped, with plain-language reasons, so
admins can validate a feed (and fix setup errors) before saving it.
- Adds the `rss_polling_feed_request_timeout` and
`rss_polling_verbose_logging` site settings.
- Extracts the fetch/parse and import/skip logic into `FeedFetcher` and
`FeedAnalyzer`, shared by the poll job and the new preview so the
dry-run and the real import always agree.
- Normalizes feed dates and categories so Atom feeds (which use
`<updated>` and `term`-style `<category>` elements) are handled like
RSS, and returns a clean error instead of a 500 when a feed cannot be
read.

---------

Co-authored-by: Martin Brennan <martin@discourse.org>
2026-07-02 07:40:25 +02:00
..
automation I18N: Update translations (#40993) 2026-06-17 18:35:15 +02:00
chat DEV: Remove queryAll uses in core tests (#41324) 2026-07-01 11:55:39 +01:00
checklist
discourse-adplugin DEV: Bump eslint/lint-configs, and correct violations (#41321) 2026-07-01 10:39:57 +01:00
discourse-affiliate
discourse-ai FEATURE: add AI agent thinking effort (#41280) 2026-07-01 17:03:19 -03:00
discourse-apple-auth
discourse-assign SECURITY: Honor group visibility in discourse-assign group lookups (#41176) 2026-06-25 13:57:46 -03:00
discourse-cakeday DEV: Remove queryAll uses in core tests (#41324) 2026-07-01 11:55:39 +01:00
discourse-calendar FIX: Single-occurrence RSVPs filled the "My events" calendar (#40813) 2026-07-01 21:04:25 +02:00
discourse-chat-integration I18N: Update translations (#40823) 2026-06-12 16:19:35 +02:00
discourse-data-explorer I18N: Update translations (#41320) 2026-07-01 11:25:46 +02:00
discourse-details DEV: Update discourse-details description and README (#40786) 2026-06-12 07:59:18 +10:00
discourse-gamification I18N: Update translations (#41121) 2026-06-23 17:51:40 +02:00
discourse-github FEATURE: Route all GitHub API requests through one rate-limited client (#40637) 2026-06-15 10:59:10 +02:00
discourse-graphviz UX: Fit large Graphviz graphs to the box instead of overflowing (#40915) 2026-06-15 22:44:39 +01:00
discourse-hcaptcha DEV: Block external requests in system specs via Chrome DNS resolver (#40685) 2026-06-17 12:29:57 +01:00
discourse-lazy-videos
discourse-local-dates I18N: Update translations (#41257) 2026-06-29 15:30:28 +02:00
discourse-login-with-amazon I18N: Update translations (#40789) 2026-06-11 12:09:07 +02:00
discourse-lti
discourse-math I18N: Update translations (#40680) 2026-06-09 17:21:49 +02:00
discourse-microsoft-auth
discourse-narrative-bot I18N: Update translations (#40563) 2026-06-04 23:05:44 +02:00
discourse-oauth2-basic I18N: Update translations (#40789) 2026-06-11 12:09:07 +02:00
discourse-openid-connect I18N: Update translations (#40789) 2026-06-11 12:09:07 +02:00
discourse-patreon I18N: Update translations (#40680) 2026-06-09 17:21:49 +02:00
discourse-policy I18N: Update translations (#40823) 2026-06-12 16:19:35 +02:00
discourse-post-voting I18N: Update translations (#41121) 2026-06-23 17:51:40 +02:00
discourse-presence DEV: remove use of body:has() in CSS (#40841) 2026-06-12 14:13:05 -04:00
discourse-reactions FEATURE: add new chat reactions popup (#41028) 2026-06-25 14:56:08 +04:00
discourse-rewind DEV: Bump eslint/lint-configs, and correct violations (#41321) 2026-07-01 10:39:57 +01:00
discourse-rss-polling UX: Redesign the RSS Polling admin interface (#40790) 2026-07-02 07:40:25 +02:00
discourse-solved I18N: Update translations (#41320) 2026-07-01 11:25:46 +02:00
discourse-subscriptions DEV: Bump eslint/lint-configs, and correct violations (#41321) 2026-07-01 10:39:57 +01:00
discourse-templates FIX: Support unloaded categories in template topic options (#41230) 2026-06-29 14:35:07 +08:00
discourse-topic-voting FEATURE: Allow selecting multiple category types when creating a category (#40912) 2026-06-22 10:07:36 +02:00
discourse-user-notes I18N: Update translations (#40680) 2026-06-09 17:21:49 +02:00
discourse-workflows DEV: Reuse SettingDefinitionField for workflows forms (#41185) 2026-07-01 17:07:49 +02:00
discourse-zendesk-plugin
footnote I18N: Update translations (#41287) 2026-06-30 15:45:46 +02:00
poll UX: Redesign the RSS Polling admin interface (#40790) 2026-07-02 07:40:25 +02:00
spoiler-alert FIX: Allow re-blur on spoiler when in details view (#41266) 2026-06-29 12:47:49 -05:00
styleguide DEV: Remove a batch of simple JQuery uses (#40986) 2026-06-18 11:40:49 +01:00