forked from Archives/Athou_commafeed
add about page
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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",
|
||||
|
||||
134
commafeed-client/src/components/KeyboardShortcutsHelp.tsx
Normal file
134
commafeed-client/src/components/KeyboardShortcutsHelp.tsx
Normal 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>
|
||||
)
|
||||
}
|
||||
@@ -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 (
|
||||
|
||||
@@ -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} />
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
159
commafeed-client/src/pages/app/AboutPage.tsx
Normal file
159
commafeed-client/src/pages/app/AboutPage.tsx
Normal 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
|
||||
<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>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user