diff --git a/client/components/modals/rssfeed/OpenCloseModal.vue b/client/components/modals/rssfeed/OpenCloseModal.vue
index 86dfeccf4..f125f6d3a 100644
--- a/client/components/modals/rssfeed/OpenCloseModal.vue
+++ b/client/components/modals/rssfeed/OpenCloseModal.vue
@@ -66,6 +66,7 @@ export default {
currentFeed: null,
metadataDetails: {
preventIndexing: true,
+ reverseOrder: false,
ownerName: '',
ownerEmail: ''
},
diff --git a/client/components/modals/rssfeed/ViewFeedModal.vue b/client/components/modals/rssfeed/ViewFeedModal.vue
index ac594ed7c..4193a0019 100644
--- a/client/components/modals/rssfeed/ViewFeedModal.vue
+++ b/client/components/modals/rssfeed/ViewFeedModal.vue
@@ -16,6 +16,12 @@
{{ feed.meta.preventIndexing ? 'Yes' : 'No' }}
+
+
+ {{ $strings.LabelRSSFeedReverseOrder }}
+
+
{{ feed.meta.reverseOrder ? 'Yes' : 'No' }}
+
{{ $strings.LabelRSSFeedCustomOwnerName }}
diff --git a/client/components/widgets/RssFeedMetadataBuilder.vue b/client/components/widgets/RssFeedMetadataBuilder.vue
index 5e6294855..5052aad1b 100644
--- a/client/components/widgets/RssFeedMetadataBuilder.vue
+++ b/client/components/widgets/RssFeedMetadataBuilder.vue
@@ -24,6 +24,9 @@
+
+
+
@@ -38,7 +41,8 @@ export default {
return {
preventIndexing: true,
ownerName: '',
- ownerEmail: ''
+ ownerEmail: '',
+ reverseOrder: false
}
}
}
@@ -82,6 +86,17 @@ export default {
ownerEmail: value
})
}
+ },
+ reverseOrder: {
+ get() {
+ return this.value.reverseOrder
+ },
+ set(value) {
+ this.$emit('input', {
+ ...this.value,
+ reverseOrder: value
+ })
+ }
}
},
methods: {},
diff --git a/client/strings/en-us.json b/client/strings/en-us.json
index 37a3aae3e..e8c764bfd 100644
--- a/client/strings/en-us.json
+++ b/client/strings/en-us.json
@@ -508,6 +508,7 @@
"LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedOpen": "RSS Feed Open",
"LabelRSSFeedPreventIndexing": "Prevent Indexing",
+ "LabelRSSFeedReverseOrder": "Reverse Episode Order",
"LabelRSSFeedSlug": "RSS Feed Slug",
"LabelRSSFeedURL": "RSS Feed URL",
"LabelRandomly": "Randomly",
@@ -1081,4 +1082,4 @@
"ToastUserPasswordMismatch": "Passwords do not match",
"ToastUserPasswordMustChange": "New password cannot match old password",
"ToastUserRootRequireName": "Must enter a root username"
-}
+}
\ No newline at end of file
diff --git a/server/models/Feed.js b/server/models/Feed.js
index 577dedfb9..654099076 100644
--- a/server/models/Feed.js
+++ b/server/models/Feed.js
@@ -388,7 +388,11 @@ class Feed extends Model {
ownerEmail: DataTypes.STRING,
explicit: DataTypes.BOOLEAN,
preventIndexing: DataTypes.BOOLEAN,
- coverPath: DataTypes.STRING
+ coverPath: DataTypes.STRING,
+ reverseOrder: {
+ type: DataTypes.BOOLEAN,
+ defaultValue: false
+ }
},
{
sequelize,
@@ -613,8 +617,13 @@ class Feed extends Model {
}
const rssfeed = new RSS(rssData)
- this.feedEpisodes.forEach((ep) => {
- rssfeed.item(ep.getRSSData(hostPrefix))
+ let episodes = this.feedEpisodes || []
+ if (this.reverseOrder) {
+ episodes = [...episodes].reverse()
+ }
+
+ episodes.forEach(episode => {
+ rssfeed.item(episode.getRSSData(hostPrefix))
})
return rssfeed.xml()
}