add support for custom js code that will be executed on page load (#1032)

This commit is contained in:
Athou
2023-05-05 18:28:31 +02:00
parent b1b5eeb0e0
commit 3d1a1cd033
41 changed files with 431 additions and 219 deletions

View File

@@ -11,5 +11,6 @@
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
<script src="custom_js.js"></script>
</body>
</html>

View File

@@ -231,6 +231,7 @@ export interface Settings {
showRead: boolean
scrollMarks: boolean
customCss?: string
customJs?: string
scrollSpeed: number
sharingSettings: SharingSettings
}

View File

@@ -11,20 +11,24 @@ import { TbDeviceFloppy } from "react-icons/tb"
interface FormData {
customCss: string
customJs: string
}
export function CustomCss() {
export function CustomCodeSettings() {
const settings = useAppSelector(state => state.user.settings)
const customCss = settings?.customCss
const dispatch = useAppDispatch()
const form = useForm<FormData>()
const { setValues } = form
const saveCustomCss = useAsyncCallback(
const saveCustomCode = useAsyncCallback(
async (d: FormData) => {
if (!settings) return
await client.user.saveSettings({ ...settings, customCss: d.customCss })
await client.user.saveSettings({
...settings,
customCss: d.customCss,
customJs: d.customJs,
})
},
{
onSuccess: () => {
@@ -34,25 +38,27 @@ export function CustomCss() {
)
useEffect(() => {
if (!customCss) return
if (!settings) return
setValues({
customCss,
customCss: settings.customCss,
customJs: settings.customJs,
})
}, [setValues, customCss])
}, [setValues, settings])
return (
<>
{saveCustomCss.error && (
{saveCustomCode.error && (
<Box mb="md">
<Alert messages={errorToStrings(saveCustomCss.error)} />
<Alert messages={errorToStrings(saveCustomCode.error)} />
</Box>
)}
<form onSubmit={form.onSubmit(saveCustomCss.execute)}>
<form onSubmit={form.onSubmit(saveCustomCode.execute)}>
<Stack>
<Textarea
autosize
minRows={4}
maxRows={15}
{...form.getInputProps("customCss")}
description={<Trans>Custom CSS rules that will be applied</Trans>}
styles={{
@@ -62,11 +68,24 @@ export function CustomCss() {
}}
/>
<Textarea
autosize
minRows={4}
maxRows={15}
{...form.getInputProps("customJs")}
description={<Trans>Custom JS code that will be executed on page load</Trans>}
styles={{
input: {
fontFamily: "monospace",
},
}}
/>
<Group>
<Button variant="default" onClick={() => dispatch(redirectToSelectedSource())}>
<Trans>Cancel</Trans>
</Button>
<Button type="submit" leftIcon={<TbDeviceFloppy size={16} />} loading={saveCustomCss.loading}>
<Button type="submit" leftIcon={<TbDeviceFloppy size={16} />} loading={saveCustomCode.loading}>
<Trans>Save</Trans>
</Button>
</Group>

View File

@@ -123,7 +123,7 @@ msgstr "ملحقات المستعرض"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "السيطرة"
msgid "Current password"
msgstr "كلمة المرور الحالية"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Extensions del navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Contrasenya actual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Rozšíření prohlížeče"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Aktuální heslo"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Estyniadau porwr"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Cyfrinair presennol"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Browserudvidelser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Nuværende adgangskode"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Browsererweiterungen"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "Strg"
msgid "Current password"
msgstr "Aktuelles Passwort"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Browser extentions"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,14 +195,18 @@ msgstr "Ctrl"
msgid "Current password"
msgstr "Current password"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
msgstr "Custom CSS"
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr "Custom JS code that will be executed on page load"
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr "Custom code"
#: src/pages/admin/AdminUsersPage.tsx
msgid "Date created"
msgstr "Date created"
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr "Right click"
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Extensiones del navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Contraseña actual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "گسترش مرورگر"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "رمز عبور فعلی"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Selaimen laajennukset"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Nykyinen salasana"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Extensions pour navigateurs"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "Ctrl"
msgid "Current password"
msgstr "Mot de passe actuel"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Extensións do navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Contrasinal actual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Böngészőbővítések"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Jelenlegi jelszó"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Ekstensi peramban"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Kata sandi saat ini"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Estensioni del browser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "ctrl"
msgid "Current password"
msgstr "Password attuale"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "ブラウザ拡張機能"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "コントロール"
msgid "Current password"
msgstr "現在のパスワード"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "브라우저 확장"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "컨트롤"
msgid "Current password"
msgstr "현재 비밀번호"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Peluasan penyemak imbas"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Kata laluan semasa"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Nettleserutvidelser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Gjeldende passord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Browserextensies"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Huidig wachtwoord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Nettleserutvidelser"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Gjeldende passord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Rozszerzenia przeglądarki"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "aktualne hasło"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Extensões do navegador"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Senha atual"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Расширения браузера"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Текущий пароль"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Rozšírenia prehliadača"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Aktuálne heslo"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Webbläsartillägg"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Aktuellt lösenord"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "Tarayıcı uzantıları"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr ""
msgid "Current password"
msgstr "Geçerli şifre"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -123,7 +123,7 @@ msgstr "浏览器扩展"
#: src/components/content/add/AddCategory.tsx
#: src/components/content/add/ImportOpml.tsx
#: src/components/header/MarkAllAsReadButton.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/admin/AdminUsersPage.tsx
@@ -195,12 +195,16 @@ msgstr "控制"
msgid "Current password"
msgstr "当前密码"
#: src/pages/app/SettingsPage.tsx
msgid "Custom CSS"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom CSS rules that will be applied"
msgstr ""
#: src/components/settings/CustomCss.tsx
msgid "Custom CSS rules that will be applied"
#: src/components/settings/CustomCodeSettings.tsx
msgid "Custom JS code that will be executed on page load"
msgstr ""
#: src/pages/app/SettingsPage.tsx
msgid "Custom code"
msgstr ""
#: src/pages/admin/AdminUsersPage.tsx
@@ -631,7 +635,7 @@ msgid "Right click"
msgstr ""
#: src/components/admin/UserEdit.tsx
#: src/components/settings/CustomCss.tsx
#: src/components/settings/CustomCodeSettings.tsx
#: src/components/settings/ProfileSettings.tsx
#: src/pages/app/CategoryDetailsPage.tsx
#: src/pages/app/FeedDetailsPage.tsx

View File

@@ -1,9 +1,9 @@
import { Trans } from "@lingui/macro"
import { Container, Tabs } from "@mantine/core"
import { CustomCss } from "components/settings/CustomCss"
import { CustomCodeSettings } from "components/settings/CustomCodeSettings"
import { DisplaySettings } from "components/settings/DisplaySettings"
import { ProfileSettings } from "components/settings/ProfileSettings"
import { TbBoxMargin, TbPhoto, TbUser } from "react-icons/tb"
import { TbCode, TbPhoto, TbUser } from "react-icons/tb"
export function SettingsPage() {
return (
@@ -13,8 +13,8 @@ export function SettingsPage() {
<Tabs.Tab value="display" icon={<TbPhoto size={16} />}>
<Trans>Display</Trans>
</Tabs.Tab>
<Tabs.Tab value="customCss" icon={<TbBoxMargin size={16} />}>
<Trans>Custom CSS</Trans>
<Tabs.Tab value="customCode" icon={<TbCode size={16} />}>
<Trans>Custom code</Trans>
</Tabs.Tab>
<Tabs.Tab value="profile" icon={<TbUser size={16} />}>
<Trans>Profile</Trans>
@@ -25,8 +25,8 @@ export function SettingsPage() {
<DisplaySettings />
</Tabs.Panel>
<Tabs.Panel value="customCss" pt="xl">
<CustomCss />
<Tabs.Panel value="customCode" pt="xl">
<CustomCodeSettings />
</Tabs.Panel>
<Tabs.Panel value="profile" pt="xl">

View File

@@ -25,6 +25,7 @@ export default defineConfig({
"/ws": "ws://localhost:8083",
"/swagger": "http://localhost:8083",
"/custom_css.css": "http://localhost:8083",
"/custom_js.js": "http://localhost:8083",
},
},
build: {

View File

@@ -43,6 +43,7 @@ import com.commafeed.frontend.resource.ServerREST;
import com.commafeed.frontend.resource.UserREST;
import com.commafeed.frontend.servlet.AnalyticsServlet;
import com.commafeed.frontend.servlet.CustomCssServlet;
import com.commafeed.frontend.servlet.CustomJsServlet;
import com.commafeed.frontend.servlet.LogoutServlet;
import com.commafeed.frontend.servlet.NextUnreadServlet;
import com.commafeed.frontend.session.SessionHelperFactoryProvider;
@@ -173,6 +174,7 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
environment.servlets().addServlet("next", injector.getInstance(NextUnreadServlet.class)).addMapping("/next");
environment.servlets().addServlet("logout", injector.getInstance(LogoutServlet.class)).addMapping("/logout");
environment.servlets().addServlet("customCss", injector.getInstance(CustomCssServlet.class)).addMapping("/custom_css.css");
environment.servlets().addServlet("customJs", injector.getInstance(CustomJsServlet.class)).addMapping("/custom_js.js");
environment.servlets().addServlet("analytics.js", injector.getInstance(AnalyticsServlet.class)).addMapping("/analytics.js");
// WebSocket endpoint

View File

@@ -57,6 +57,11 @@ public class UserSettings extends AbstractModel {
@Type(type = "org.hibernate.type.TextType")
private String customCss;
@Lob
@Column(length = Integer.MAX_VALUE)
@Type(type = "org.hibernate.type.TextType")
private String customJs;
@Column(name = "scroll_speed")
private int scrollSpeed;

View File

@@ -29,6 +29,9 @@ public class Settings implements Serializable {
@ApiModelProperty(value = "user's custom css for the website")
private String customCss;
@ApiModelProperty(value = "user's custom js for the website")
private String customJs;
@ApiModelProperty(value = "user's preferred scroll speed when navigating between entries", required = true)
private int scrollSpeed;

View File

@@ -100,6 +100,7 @@ public class UserREST {
s.setScrollMarks(settings.isScrollMarks());
s.setCustomCss(settings.getCustomCss());
s.setCustomJs(settings.getCustomJs());
s.setLanguage(settings.getLanguage());
s.setScrollSpeed(settings.getScrollSpeed());
} else {
@@ -141,6 +142,7 @@ public class UserREST {
s.setShowRead(settings.isShowRead());
s.setScrollMarks(settings.isScrollMarks());
s.setCustomCss(settings.getCustomCss());
s.setCustomJs(settings.getCustomJs());
s.setLanguage(settings.getLanguage());
s.setScrollSpeed(settings.getScrollSpeed());

View File

@@ -0,0 +1,51 @@
package com.commafeed.frontend.servlet;
import java.io.IOException;
import java.util.Optional;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.SessionFactory;
import com.commafeed.backend.dao.UnitOfWork;
import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings;
import com.commafeed.frontend.session.SessionHelper;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
abstract class AbstractCustomCodeServlet extends HttpServlet {
private final SessionFactory sessionFactory;
private final UserSettingsDAO userSettingsDAO;
@Override
protected final void doGet(final HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType(getMimeType());
final Optional<User> user = new SessionHelper(req).getLoggedInUser();
if (!user.isPresent()) {
return;
}
UserSettings settings = UnitOfWork.call(sessionFactory, () -> userSettingsDAO.findByUser(user.get()));
if (settings == null) {
return;
}
String customCode = getCustomCode(settings);
if (customCode == null) {
return;
}
resp.getWriter().write(customCode);
}
protected abstract String getMimeType();
protected abstract String getCustomCode(UserSettings settings);
}

View File

@@ -1,47 +1,27 @@
package com.commafeed.frontend.servlet;
import java.io.IOException;
import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.SessionFactory;
import com.commafeed.backend.dao.UnitOfWork;
import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings;
import com.commafeed.frontend.session.SessionHelper;
import lombok.RequiredArgsConstructor;
public class CustomCssServlet extends AbstractCustomCodeServlet {
@SuppressWarnings("serial")
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class CustomCssServlet extends HttpServlet {
private final SessionFactory sessionFactory;
private final UserSettingsDAO userSettingsDAO;
@Inject
public CustomCssServlet(SessionFactory sessionFactory, UserSettingsDAO userSettingsDAO) {
super(sessionFactory, userSettingsDAO);
}
@Override
protected void doGet(final HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/css");
final Optional<User> user = new SessionHelper(req).getLoggedInUser();
if (!user.isPresent()) {
return;
}
UserSettings settings = UnitOfWork.call(sessionFactory, () -> userSettingsDAO.findByUser(user.get()));
if (settings == null || settings.getCustomCss() == null) {
return;
}
resp.getWriter().write(settings.getCustomCss());
protected String getMimeType() {
return "text/css";
}
@Override
protected String getCustomCode(UserSettings settings) {
return settings.getCustomCss();
}
}

View File

@@ -0,0 +1,29 @@
package com.commafeed.frontend.servlet;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory;
import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.model.UserSettings;
@Singleton
public class CustomJsServlet extends AbstractCustomCodeServlet {
@Inject
public CustomJsServlet(SessionFactory sessionFactory, UserSettingsDAO userSettingsDAO) {
super(sessionFactory, userSettingsDAO);
}
@Override
protected String getMimeType() {
return "application/javascript";
}
@Override
protected String getCustomCode(UserSettings settings) {
return settings.getCustomJs();
}
}

View File

@@ -9,4 +9,10 @@
<dropColumn tableName="USERSETTINGS" columnName="viewMode" />
</changeSet>
<changeSet id="add-customjs-column" author="athou">
<addColumn tableName="USERSETTINGS">
<column name="customJs" type="CLOB" />
</addColumn>
</changeSet>
</databaseChangeLog>