add about page

This commit is contained in:
Athou
2022-08-15 13:26:45 +02:00
parent a8e818f97f
commit e2340c2e98
9 changed files with 587 additions and 3 deletions

View File

@@ -15,6 +15,7 @@ import { Tree } from "components/sidebar/Tree"
import { useI18n } from "i18n"
import { AdminUsersPage } from "pages/admin/AdminUsersPage"
import { MetricsPage } from "pages/admin/MetricsPage"
import { AboutPage } from "pages/app/AboutPage"
import { AddPage } from "pages/app/AddPage"
import { CategoryDetailsPage } from "pages/app/CategoryDetailsPage"
import { FeedDetailsPage } from "pages/app/FeedDetailsPage"
@@ -81,6 +82,7 @@ function AppRoutes() {
<Route path="users" element={<AdminUsersPage />} />
<Route path="metrics" element={<MetricsPage />} />
</Route>
<Route path="about" element={<AboutPage />} />
</Route>
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>

View File

@@ -40,6 +40,7 @@ export const redirectToAdminUsers = createAsyncThunk("redirect/admin/users", (_,
export const redirectToMetrics = createAsyncThunk("redirect/admin/metrics", (_, thunkApi) =>
thunkApi.dispatch(redirectTo("/app/admin/metrics"))
)
export const redirectToAbout = createAsyncThunk("redirect/about", (_, thunkApi) => thunkApi.dispatch(redirectTo("/app/about")))
export const redirectSlice = createSlice({
name: "redirect",

View File

@@ -0,0 +1,134 @@
import { Trans } from "@lingui/macro"
import { Kbd, Table } from "@mantine/core"
export function KeyboardShortcutsHelp() {
return (
<Table striped highlightOnHover>
<tbody>
<tr>
<td>
<Trans>Refresh</Trans>
</td>
<td>
<Kbd>R</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open next entry</Trans>
</td>
<td>
<Kbd>J</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open previous entry</Trans>
</td>
<td>
<Kbd>K</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Move the page down</Trans>
</td>
<td>
<Kbd>
<Trans>Space</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Move the page up</Trans>
</td>
<td>
<Kbd>
<Trans>Shift</Trans>
</Kbd>
<span> + </span>
<Kbd>
<Trans>Space</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open/close current entry</Trans>
</td>
<td>
<Kbd>O</Kbd>,<span> </span>
<Kbd>
<Trans>Enter</Trans>
</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open current entry in a new tab</Trans>
</td>
<td>
<Kbd>V</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Open current entry in a new tab in the background</Trans>
</td>
<td>
<Kbd>B</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Toggle read status of current entry</Trans>
</td>
<td>
<Kbd>M</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Mark all entries as read</Trans>
</td>
<td>
<Kbd>
<Trans>Shift</Trans>
</Kbd>
<span> + </span>
<Kbd>A</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Go to the All view</Trans>
</td>
<td>
<Kbd>G</Kbd>
<span> </span>
<Kbd>A</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Navigate to a subscription by entering its name</Trans>
</td>
<td>
<Kbd>G</Kbd>
<span> </span>
<Kbd>U</Kbd>
</td>
</tr>
<tr>
<td>
<Trans>Show keyboard shortcut help</Trans>
</td>
<td>
<Kbd>?</Kbd>
</td>
</tr>
</tbody>
</Table>
)
}

View File

@@ -1,3 +1,5 @@
import { t } from "@lingui/macro"
import { openModal } from "@mantine/modals"
import { Constants } from "app/constants"
import {
loadMoreEntries,
@@ -10,6 +12,7 @@ import {
} from "app/slices/entries"
import { redirectToRootCategory } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { Loader } from "components/Loader"
import { useMousetrap } from "hooks/useMousetrap"
import { useEffect, useRef } from "react"
@@ -129,6 +132,9 @@ export function FeedEntries() {
useMousetrap("g a", () => {
dispatch(redirectToRootCategory())
})
useMousetrap("?", () => {
openModal({ title: t`Keyboard shortcuts`, size: "xl", children: <KeyboardShortcutsHelp /> })
})
if (!entries) return <Loader />
return (

View File

@@ -1,9 +1,12 @@
import { t } from "@lingui/macro"
import { Select, SelectItem, SelectProps } from "@mantine/core"
import { Constants } from "app/constants"
import { useAppSelector } from "app/store"
import { flattenCategoryTree } from "app/utils"
export function CategorySelect(props: Partial<SelectProps>) {
type CategorySelectProps = Partial<SelectProps> & { withAll?: boolean }
export function CategorySelect(props: CategorySelectProps) {
const rootCategory = useAppSelector(state => state.tree.rootCategory)
const categories = rootCategory && flattenCategoryTree(rootCategory)
const selectData: SelectItem[] | undefined = categories
@@ -13,6 +16,12 @@ export function CategorySelect(props: Partial<SelectProps>) {
label: c.name,
value: c.id,
}))
if (props.withAll) {
selectData?.unshift({
label: t`All`,
value: Constants.categoryIds.all,
})
}
return <Select {...props} data={selectData ?? []} disabled={!selectData} />
}

View File

@@ -1,9 +1,9 @@
import { Trans } from "@lingui/macro"
import { Divider, Menu, useMantineColorScheme } from "@mantine/core"
import { redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
import { redirectToAbout, redirectToAdminUsers, redirectToMetrics, redirectToSettings } from "app/slices/redirect"
import { useAppDispatch, useAppSelector } from "app/store"
import { useState } from "react"
import { TbChartLine, TbMoon, TbPower, TbSettings, TbSun, TbUsers } from "react-icons/tb"
import { TbChartLine, TbHelp, TbMoon, TbPower, TbSettings, TbSun, TbUsers } from "react-icons/tb"
interface ProfileMenuProps {
control: React.ReactElement
@@ -65,6 +65,15 @@ export function ProfileMenu(props: ProfileMenuProps) {
)}
<Divider />
<Menu.Item
icon={<TbHelp />}
onClick={() => {
dispatch(redirectToAbout())
setOpened(false)
}}
>
<Trans>About</Trans>
</Menu.Item>
<Menu.Item icon={<TbPower />} onClick={logout}>
<Trans>Logout</Trans>
</Menu.Item>

View File

@@ -29,6 +29,11 @@ msgstr "<0>Need an account?</0><1>Sign up!</1>"
msgid "API key"
msgstr "API key"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
msgstr "About"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Actions"
msgstr "Actions"
@@ -51,6 +56,7 @@ msgstr "Add user"
msgid "Admin"
msgstr "Admin"
#: src/components/content/add/CategorySelect.tsx
#: src/components/header/Header.tsx
#: src/components/sidebar/Tree.tsx
msgid "All"
@@ -104,6 +110,10 @@ msgstr "Back"
msgid "Back to log in"
msgstr "Back to log in"
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Browser extentions"
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
@@ -121,6 +131,7 @@ msgstr "Cancel"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/AboutPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Category"
msgstr "Category"
@@ -133,6 +144,18 @@ msgstr "Changing password will generate a new API key"
msgid "Check that the feed is working"
msgstr "Check that the feed is working"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed next unread item"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed version {version} ({revision})"
#: src/components/header/Header.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -182,6 +205,10 @@ msgstr "Display"
msgid "Download"
msgstr "Download"
#: src/pages/app/AboutPage.tsx
msgid "Drag link to bookmark bar"
msgstr "Drag link to bookmark bar"
#: src/components/admin/UserEdit.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -204,6 +231,10 @@ msgstr "Edit user"
msgid "Enabled"
msgstr "Enabled"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Enter"
msgstr "Enter"
#: src/components/settings/ProfileSettings.tsx
msgid "Enter your current password to change profile settings"
msgstr "Enter your current password to change profile settings"
@@ -252,6 +283,14 @@ msgstr "Generate new API key"
msgid "Generated feed url"
msgstr "Generated feed url"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Go to the All view"
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Goodies"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Id"
msgstr "Id"
@@ -260,6 +299,14 @@ msgstr "Id"
msgid "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
msgstr "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
#: src/pages/app/AboutPage.tsx
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "If you encounter an issue, please report it on the issues page of the GitHub project."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Import"
@@ -268,6 +315,11 @@ msgstr "Import"
msgid "Keep unread"
msgstr "Keep unread"
#: src/components/content/FeedEntries.tsx
#: src/pages/app/AboutPage.tsx
msgid "Keyboard shortcuts"
msgstr "Keyboard shortcuts"
#: src/components/settings/DisplaySettings.tsx
msgid "Language"
msgstr "Language"
@@ -289,6 +341,10 @@ msgstr "Last refresh message"
msgid "Link"
msgstr "Link"
#: src/pages/app/AboutPage.tsx
msgid "Link to the API documentation."
msgstr "Link to the API documentation."
#: src/hooks/useAppLoading.ts
msgid "Loading profile..."
msgstr "Loading profile..."
@@ -320,6 +376,7 @@ msgid "Mark all as read"
msgstr "Mark all as read"
#: src/components/header/Header.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Mark all entries as read"
msgstr "Mark all entries as read"
@@ -327,6 +384,14 @@ msgstr "Mark all entries as read"
msgid "Metrics"
msgstr "Metrics"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Move the page down"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page up"
msgstr "Move the page up"
#: src/components/RelativeDate.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "N/A"
@@ -339,10 +404,18 @@ msgstr "N/A"
msgid "Name"
msgstr "Name"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Navigate to a subscription by entering its name"
msgstr "Navigate to a subscription by entering its name"
#: src/components/settings/ProfileSettings.tsx
msgid "New password"
msgstr "New password"
#: src/pages/app/AboutPage.tsx
msgid "Newest first"
msgstr "Newest first"
#: src/components/content/add/Subscribe.tsx
msgid "Next"
msgstr "Next"
@@ -351,6 +424,10 @@ msgstr "Next"
msgid "Next refresh"
msgstr "Next refresh"
#: src/pages/app/AboutPage.tsx
msgid "Next unread item bookmarklet"
msgstr "Next unread item bookmarklet"
#: src/pages/app/FeedEntriesPage.tsx
msgid "No more entries"
msgstr "No more entries"
@@ -372,14 +449,42 @@ msgstr "OPML export"
msgid "OPML file"
msgstr "OPML file"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Oldest first"
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Oops!"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Open current entry in a new tab"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab in the background"
msgstr "Open current entry in a new tab in the background"
#: src/components/content/FeedEntryFooter.tsx
msgid "Open link"
msgstr "Open link"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Open next entry"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open previous entry"
msgstr "Open previous entry"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open/close current entry"
msgstr "Open/close current entry"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Order"
#: src/components/content/add/AddCategory.tsx
msgid "Parent"
msgstr "Parent"
@@ -413,11 +518,16 @@ msgstr "Position"
msgid "Profile"
msgstr "Profile"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "REST API"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Recover password"
#: src/components/header/Header.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Refresh"
msgstr "Refresh"
@@ -449,6 +559,15 @@ msgstr "Settings"
msgid "Settings saved."
msgstr "Settings saved."
#: src/components/KeyboardShortcutsHelp.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Shift"
msgstr "Shift"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show keyboard shortcut help"
msgstr "Show keyboard shortcut help"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
msgid "Sign up"
@@ -458,12 +577,21 @@ msgstr "Sign up"
msgid "Something bad just happened..."
msgstr "Something bad just happened..."
#: src/components/KeyboardShortcutsHelp.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Space"
msgstr "Space"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/AddPage.tsx
msgid "Subscribe"
msgstr "Subscribe"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "Subscribe URL"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "Subscribe to the feed"
@@ -480,6 +608,10 @@ msgstr "The URL for the feed you want to subscribe to. You can also use the webs
msgid "Theme"
msgstr "Theme"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle read status of current entry"
msgstr "Toggle read status of current entry"
#: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Try out CommaFeed with the demo account: demo/demo"

View File

@@ -29,6 +29,11 @@ msgstr "<0>Besoin d'un compte ?</0><1>Enregistrez-vous !</1>"
msgid "API key"
msgstr "Clé API"
#: src/components/header/ProfileMenu.tsx
#: src/pages/app/AboutPage.tsx
msgid "About"
msgstr "A propos"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Actions"
msgstr "Actions"
@@ -51,6 +56,7 @@ msgstr "Ajouter un utilisateur"
msgid "Admin"
msgstr "Administrateur"
#: src/components/content/add/CategorySelect.tsx
#: src/components/header/Header.tsx
#: src/components/sidebar/Tree.tsx
msgid "All"
@@ -104,6 +110,10 @@ msgstr "Retour"
msgid "Back to log in"
msgstr "Retour à la connexion"
#: src/pages/app/AboutPage.tsx
msgid "Browser extentions"
msgstr "Extensions pour navigateurs"
#: src/components/admin/UserEdit.tsx
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
@@ -121,6 +131,7 @@ msgstr "Annuler"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/AboutPage.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "Category"
msgstr "Catégorie"
@@ -133,6 +144,18 @@ msgstr "Changer de mot de passe générera une nouvelle clé API"
msgid "Check that the feed is working"
msgstr "Vérifie que le flux fonctionne"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed is an open-source project. Sources are hosted on <0>GitHub</0>."
msgstr "CommaFeed est un projet open-source. Les sources sont hébergées sur <0>GitHub</0>."
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed next unread item"
msgstr "CommaFeed prochain article non lu"
#: src/pages/app/AboutPage.tsx
msgid "CommaFeed version {version} ({revision})"
msgstr "CommaFeed version {version} ({revision})"
#: src/components/header/Header.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -182,6 +205,10 @@ msgstr "Affichage"
msgid "Download"
msgstr "Télécharger"
#: src/pages/app/AboutPage.tsx
msgid "Drag link to bookmark bar"
msgstr "Déplacez le lien vers la barre de favoris"
#: src/components/admin/UserEdit.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -204,6 +231,10 @@ msgstr "Modifier un utilisateur"
msgid "Enabled"
msgstr "Actif"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Enter"
msgstr "Entrer"
#: src/components/settings/ProfileSettings.tsx
msgid "Enter your current password to change profile settings"
msgstr "Entrez votre mot de passe actuel pour changer les paramètres du profil"
@@ -252,6 +283,14 @@ msgstr "Générer une nouvelle clé API"
msgid "Generated feed url"
msgstr "URL du flux généré"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Go to the All view"
msgstr "Aller à la catégorie Tout"
#: src/pages/app/AboutPage.tsx
msgid "Goodies"
msgstr "Extensions"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Id"
msgstr "Identifiant"
@@ -260,6 +299,14 @@ msgstr "Identifiant"
msgid "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically."
msgstr "Si non vide, une expression évaluant à 'vrai' ou 'faux'. Si faux, les nouvelles entrées de ce flux seront marquées comme lues automatiquement."
#: src/pages/app/AboutPage.tsx
msgid "If you encounter an issue, please report it on the issues page of the GitHub project."
msgstr "Si vous rencontrez un problème, merci de le signaler sur la page du projet GitHub."
#: src/pages/app/AboutPage.tsx
msgid "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online."
msgstr "Si vous aimez ce projet, n'hésitez pas à faire un don pour encourager le développeur et aider à couvrir les coûts d'hébergement de la plate-forme."
#: src/components/content/add/ImportOpml.tsx
msgid "Import"
msgstr "Importer"
@@ -268,6 +315,11 @@ msgstr "Importer"
msgid "Keep unread"
msgstr "Garder non lu"
#: src/components/content/FeedEntries.tsx
#: src/pages/app/AboutPage.tsx
msgid "Keyboard shortcuts"
msgstr "Raccourcis clavier"
#: src/components/settings/DisplaySettings.tsx
msgid "Language"
msgstr "Langue"
@@ -289,6 +341,10 @@ msgstr "Dernier message de mise à jour"
msgid "Link"
msgstr "Lien"
#: src/pages/app/AboutPage.tsx
msgid "Link to the API documentation."
msgstr "Lien vers la documentation de l'API."
#: src/hooks/useAppLoading.ts
msgid "Loading profile..."
msgstr "Chargement du profil ..."
@@ -320,6 +376,7 @@ msgid "Mark all as read"
msgstr "Tout marquer comme lu"
#: src/components/header/Header.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Mark all entries as read"
msgstr "Marquer toutes les entrées comme lues"
@@ -327,6 +384,14 @@ msgstr "Marquer toutes les entrées comme lues"
msgid "Metrics"
msgstr "Métriques"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page down"
msgstr "Faites défiler la page vers le bas"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Move the page up"
msgstr "Faites défiler la page vers le haut"
#: src/components/RelativeDate.tsx
#: src/pages/app/FeedDetailsPage.tsx
msgid "N/A"
@@ -339,10 +404,18 @@ msgstr "N/A"
msgid "Name"
msgstr "Nom"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Navigate to a subscription by entering its name"
msgstr "Naviguer vers un abonnement en entrant son nom"
#: src/components/settings/ProfileSettings.tsx
msgid "New password"
msgstr "Nouveau mot de passe"
#: src/pages/app/AboutPage.tsx
msgid "Newest first"
msgstr "Plus récent en premier"
#: src/components/content/add/Subscribe.tsx
msgid "Next"
msgstr "Suivant"
@@ -351,6 +424,10 @@ msgstr "Suivant"
msgid "Next refresh"
msgstr "Prochaine mise à jour"
#: src/pages/app/AboutPage.tsx
msgid "Next unread item bookmarklet"
msgstr "Bookmarklet vers le prochain article non lu"
#: src/pages/app/FeedEntriesPage.tsx
msgid "No more entries"
msgstr "Plus d'entrées"
@@ -372,14 +449,42 @@ msgstr "Export du fichier OPML"
msgid "OPML file"
msgstr "Fichier OPML"
#: src/pages/app/AboutPage.tsx
msgid "Oldest first"
msgstr "Du plus ancien au plus récent"
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Oups !"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab"
msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open current entry in a new tab in the background"
msgstr "Ouvrir l'entrée actuelle dans un nouvel onglet en arrière-plan"
#: src/components/content/FeedEntryFooter.tsx
msgid "Open link"
msgstr "Ouvrir le lien"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open next entry"
msgstr "Ouvrir l'entrée suivante"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open previous entry"
msgstr "Ouvrir l'entrée précédente"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Open/close current entry"
msgstr "Ouvrir/fermer l'entrée actuelle"
#: src/pages/app/AboutPage.tsx
msgid "Order"
msgstr "Ordre"
#: src/components/content/add/AddCategory.tsx
msgid "Parent"
msgstr "Parent"
@@ -413,11 +518,16 @@ msgstr "Position"
msgid "Profile"
msgstr "Profil"
#: src/pages/app/AboutPage.tsx
msgid "REST API"
msgstr "API REST"
#: src/pages/auth/PasswordRecoveryPage.tsx
msgid "Recover password"
msgstr "Récupérer le mot de passe"
#: src/components/header/Header.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Refresh"
msgstr "Rafraîchir"
@@ -449,6 +559,15 @@ msgstr "Réglages"
msgid "Settings saved."
msgstr "Réglages enregistrés."
#: src/components/KeyboardShortcutsHelp.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Shift"
msgstr "Maj"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Show keyboard shortcut help"
msgstr "Montrer les raccourcis clavier"
#: src/pages/auth/RegistrationPage.tsx
#: src/pages/auth/RegistrationPage.tsx
msgid "Sign up"
@@ -458,12 +577,21 @@ msgstr "Créer un compte"
msgid "Something bad just happened..."
msgstr "Quelque chose s'est mal passé..."
#: src/components/KeyboardShortcutsHelp.tsx
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Space"
msgstr "Espace"
#: src/components/content/add/Subscribe.tsx
#: src/components/content/add/Subscribe.tsx
#: src/pages/app/AddPage.tsx
msgid "Subscribe"
msgstr "S'abonner"
#: src/pages/app/AboutPage.tsx
msgid "Subscribe URL"
msgstr "URL pour s'abonner"
#: src/components/content/add/Subscribe.tsx
msgid "Subscribe to the feed"
msgstr "S'abonner au flux"
@@ -480,6 +608,10 @@ msgstr "L'URL du flux auquel vous souhaitez vous abonner. Vous pouvez aussi util
msgid "Theme"
msgstr "Thème"
#: src/components/KeyboardShortcutsHelp.tsx
msgid "Toggle read status of current entry"
msgstr "Marquer l'entrée actuelle comme lue/non lue"
#: src/pages/auth/LoginPage.tsx
msgid "Try out CommaFeed with the demo account: demo/demo"
msgstr "Essayez CommaFeed avec le compte de démonstration : demo/demo"

View File

@@ -0,0 +1,159 @@
import { t, Trans } from "@lingui/macro"
import { Anchor, Box, Center, Container, Group, List, NativeSelect, SimpleGrid, Title } from "@mantine/core"
import { Constants } from "app/constants"
import { useAppSelector } from "app/store"
import { CategorySelect } from "components/content/add/CategorySelect"
import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import React, { useState } from "react"
import { TbHelp, TbKeyboard, TbPuzzle, TbRocket } from "react-icons/tb"
function Section(props: { title: string; icon: React.ReactNode; children: React.ReactNode }) {
return (
<Box my="xs">
<Group mb="xs">
<Box>{props.icon}</Box>
<Title order={3}>{props.title}</Title>
</Group>
<Box>{props.children}</Box>
</Box>
)
}
function NextUnreadBookmarklet() {
const [categoryId, setCategoryId] = useState(Constants.categoryIds.all)
const [order, setOrder] = useState("desc")
const baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf("#"))
const href = `javascript:window.location.href='${baseUrl}next?category=${categoryId}&order=${order}&t='+new Date().getTime();`
return (
<Box>
<CategorySelect value={categoryId} onChange={c => c && setCategoryId(c)} withAll description={t`Category`} />
<NativeSelect
data={[
{ value: "desc", label: t`Newest first` },
{ value: "asc", label: t`Oldest first` },
]}
value={order}
onChange={e => setOrder(e.target.value)}
description={t`Order`}
/>
<Trans>Drag link to bookmark bar</Trans>
<span> </span>
<Anchor href={href} target="_blank" rel="noreferrer">
<Trans>CommaFeed next unread item</Trans>
</Anchor>
</Box>
)
}
export function AboutPage() {
const version = useAppSelector(state => state.server.serverInfos?.version)
const revision = useAppSelector(state => state.server.serverInfos?.gitCommit)
return (
<Container size="xl">
<SimpleGrid cols={2} breakpoints={[{ maxWidth: Constants.layout.mobileBreakpoint, cols: 1 }]}>
<Section title={t`About`} icon={<TbHelp size={24} />}>
<Box>
<Trans>
CommaFeed version {version} ({revision})
</Trans>
</Box>
<Box>
<Trans>
CommaFeed is an open-source project. Sources are hosted on&nbsp;
<Anchor href="https://github.com/Athou/commafeed" target="_blank" rel="noreferrer">
GitHub
</Anchor>
.
</Trans>
</Box>
<Box>
<Trans>If you encounter an issue, please report it on the issues page of the GitHub project.</Trans>
</Box>
<Box mt="md">
<Trans>
If you like this project, please consider a donation to support the developer and help cover the costs of
keeping this website online.
</Trans>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_donations" />
<input type="hidden" name="business" value="9CNQHMJG2ZJVY" />
<input type="hidden" name="lc" value="US" />
<input type="hidden" name="item_name" value="CommaFeed" />
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted" />
<input type="hidden" name="currency_code" value="USD" />
<Center mt="md">
<Box mr="md">
<input
type="image"
src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif"
name="submit"
alt="PayPal - The safer, easier way to pay online!"
/>
</Box>
<Box>
<select name="currency_code">
<option value="EUR">Euro</option>
<option value="USD">US Dollars</option>
</select>
</Box>
</Center>
</form>
</Box>
</Section>
<Section title={t`Keyboard shortcuts`} icon={<TbKeyboard size={24} />}>
<KeyboardShortcutsHelp />
</Section>
<Section title={t`Goodies`} icon={<TbPuzzle size={24} />}>
<List>
<List.Item>
<Trans>Browser extentions</Trans>
<List withPadding>
<List.Item>
<Anchor
href="https://addons.mozilla.org/en-US/firefox/addon/commafeed/"
target="_blank"
rel="noreferrer"
>
Firefox
</Anchor>
</List.Item>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-chrome" target="_blank" rel="noreferrer">
Chrome
</Anchor>
</List.Item>
<List.Item>
<Anchor href="https://github.com/Athou/commafeed-opera" target="_blank" rel="noreferrer">
Opera
</Anchor>
</List.Item>
</List>
</List.Item>
<List.Item>
<Trans>Subscribe URL</Trans>
<span> </span>
<Anchor href="rest/feed/subscribe?url=FEED_URL_HERE" target="_blank" rel="noreferrer">
rest/feed/subscribe?url=FEED_URL_HERE
</Anchor>
</List.Item>
<List.Item>
<Trans>Next unread item bookmarklet</Trans>
<span> </span>
<Box ml="xl">
<NextUnreadBookmarklet />
</Box>
</List.Item>
</List>
</Section>
<Section title={t`REST API`} icon={<TbRocket size={24} />}>
<Anchor href="api/" target="_blank" rel="noreferrer">
<Trans>Link to the API documentation.</Trans>
</Anchor>
</Section>
</SimpleGrid>
</Container>
)
}