From 6aecd70f39e71506062a90eb18f3ce7e07d73bce Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Fri, 2 May 2025 13:57:27 +0200 Subject: [PATCH 1/2] Link to the RSS/atom feed from the versions page. --- .../frontend/templates/package_versions.dart | 36 ++++++++++++++++++- .../frontend/golden/pkg_versions_page.html | 8 +++++ .../goldens/packages/oxygen/versions.html | 8 +++++ pkg/web_css/lib/src/_pkg.scss | 6 ++++ static/img/rss-feed-icon-4a4a4a.svg | 1 + 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100755 static/img/rss-feed-icon-4a4a4a.svg diff --git a/app/lib/frontend/templates/package_versions.dart b/app/lib/frontend/templates/package_versions.dart index 10ddff7bf6..a9827d190a 100644 --- a/app/lib/frontend/templates/package_versions.dart +++ b/app/lib/frontend/templates/package_versions.dart @@ -4,6 +4,8 @@ import 'package:_pub_shared/data/package_api.dart'; import 'package:collection/collection.dart' show IterableExtension; +import 'package:pub_dev/frontend/static_files.dart'; +import 'package:pub_dev/shared/utils.dart'; import 'package:pub_semver/pub_semver.dart'; import '../../package/model_properties.dart'; @@ -58,7 +60,39 @@ String renderPkgVersionsPage( } } - final blocks = []; + final firstPublished = + versions.reduce((a, b) => a.published!.isBefore(b.published!) ? a : b); + final versionPlural = versions.length > 2 ? 'versions' : 'version'; + final infoCount = d.fragment([ + d.text('${versions.length} $versionPlural of '), + d.code(text: data.package.name!), + d.text(' since ${shortDateFormat.format(firstPublished.published!)}.') + ]); + + final blocks = [ + d.p(classes: [ + 'pub-monochrome-icon-hoverable', + ], children: [ + d.a( + href: urls.pkgFeedUrl(data.package.name!), + title: 'Versions feed', + child: d.img( + classes: [ + 'pub-monochrome-icon', + 'filter-invert-on-dark', + 'versions-rss-image', + ], + image: d.Image( + src: staticUrls.getAssetUrl('/static/img/rss-feed-icon-4a4a4a.svg'), + alt: 'Versions feed', + width: 15, + height: 15, + ), + ), + ), + infoCount, + ]), + ]; if (stableVersionRows.isNotEmpty && prereleaseVersionRows.isNotEmpty && latestPrereleaseVersion != null) { diff --git a/app/test/frontend/golden/pkg_versions_page.html b/app/test/frontend/golden/pkg_versions_page.html index c7eb454616..ccbe1d7c99 100644 --- a/app/test/frontend/golden/pkg_versions_page.html +++ b/app/test/frontend/golden/pkg_versions_page.html @@ -212,6 +212,14 @@

Metadata

+

+ + Versions feed + + 3 versions of + oxygen + since %%version-created-date%%. +

The latest prerelease was 2.0.0-dev diff --git a/app/test/task/testdata/goldens/packages/oxygen/versions.html b/app/test/task/testdata/goldens/packages/oxygen/versions.html index 473b77d01a..69d2d6bc24 100644 --- a/app/test/task/testdata/goldens/packages/oxygen/versions.html +++ b/app/test/task/testdata/goldens/packages/oxygen/versions.html @@ -204,6 +204,14 @@

Metadata

+

+ + Versions feed + + 2 version of + oxygen + since %%short-dateformat%%. +

Stable versions of oxygen

diff --git a/pkg/web_css/lib/src/_pkg.scss b/pkg/web_css/lib/src/_pkg.scss index 655558fa14..92ceb056a8 100644 --- a/pkg/web_css/lib/src/_pkg.scss +++ b/pkg/web_css/lib/src/_pkg.scss @@ -47,6 +47,12 @@ margin-right: 3px; } +.versions-rss-image { + margin-right: 8px; + position: relative; + top: 2px; +} + .version-table { width: 100%; border-spacing: 0; diff --git a/static/img/rss-feed-icon-4a4a4a.svg b/static/img/rss-feed-icon-4a4a4a.svg new file mode 100755 index 0000000000..23fcc0ccfb --- /dev/null +++ b/static/img/rss-feed-icon-4a4a4a.svg @@ -0,0 +1 @@ + \ No newline at end of file From f32f9c964c059afa31ffa704d27ad5110204b0c6 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Fri, 2 May 2025 14:21:15 +0200 Subject: [PATCH 2/2] Updated template --- app/lib/frontend/templates/package_versions.dart | 12 ++---------- app/test/frontend/golden/pkg_versions_page.html | 4 +--- .../testdata/goldens/packages/oxygen/versions.html | 4 +--- pkg/web_css/lib/src/_pkg.scss | 2 +- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/app/lib/frontend/templates/package_versions.dart b/app/lib/frontend/templates/package_versions.dart index a9827d190a..253bc1b95e 100644 --- a/app/lib/frontend/templates/package_versions.dart +++ b/app/lib/frontend/templates/package_versions.dart @@ -5,7 +5,6 @@ import 'package:_pub_shared/data/package_api.dart'; import 'package:collection/collection.dart' show IterableExtension; import 'package:pub_dev/frontend/static_files.dart'; -import 'package:pub_dev/shared/utils.dart'; import 'package:pub_semver/pub_semver.dart'; import '../../package/model_properties.dart'; @@ -60,19 +59,13 @@ String renderPkgVersionsPage( } } - final firstPublished = - versions.reduce((a, b) => a.published!.isBefore(b.published!) ? a : b); - final versionPlural = versions.length > 2 ? 'versions' : 'version'; - final infoCount = d.fragment([ - d.text('${versions.length} $versionPlural of '), - d.code(text: data.package.name!), - d.text(' since ${shortDateFormat.format(firstPublished.published!)}.') - ]); + final versionsPlural = versions.length > 1 ? 'versions' : 'version'; final blocks = [ d.p(classes: [ 'pub-monochrome-icon-hoverable', ], children: [ + d.text('${versions.length} $versionsPlural'), d.a( href: urls.pkgFeedUrl(data.package.name!), title: 'Versions feed', @@ -90,7 +83,6 @@ String renderPkgVersionsPage( ), ), ), - infoCount, ]), ]; if (stableVersionRows.isNotEmpty && diff --git a/app/test/frontend/golden/pkg_versions_page.html b/app/test/frontend/golden/pkg_versions_page.html index ccbe1d7c99..b177f237fd 100644 --- a/app/test/frontend/golden/pkg_versions_page.html +++ b/app/test/frontend/golden/pkg_versions_page.html @@ -213,12 +213,10 @@

Metadata

+ 3 versions Versions feed - 3 versions of - oxygen - since %%version-created-date%%.

The latest prerelease was diff --git a/app/test/task/testdata/goldens/packages/oxygen/versions.html b/app/test/task/testdata/goldens/packages/oxygen/versions.html index 69d2d6bc24..66a049f973 100644 --- a/app/test/task/testdata/goldens/packages/oxygen/versions.html +++ b/app/test/task/testdata/goldens/packages/oxygen/versions.html @@ -205,12 +205,10 @@

Metadata

+ 2 versions Versions feed - 2 version of - oxygen - since %%short-dateformat%%.

Stable versions of oxygen

diff --git a/pkg/web_css/lib/src/_pkg.scss b/pkg/web_css/lib/src/_pkg.scss index 92ceb056a8..27fd0245c1 100644 --- a/pkg/web_css/lib/src/_pkg.scss +++ b/pkg/web_css/lib/src/_pkg.scss @@ -48,7 +48,7 @@ } .versions-rss-image { - margin-right: 8px; + margin-left: 8px; position: relative; top: 2px; }