diff --git a/README.md b/README.md
index 590d978..f4a1a0a 100644
--- a/README.md
+++ b/README.md
@@ -122,6 +122,7 @@ The following list contains such features - they are only available for [etke.cc
* 📊 [Server Status indicator and page](https://github.com/etkecc/synapse-admin/pull/182)
* 📬 [Server Notifications indicator and page](https://github.com/etkecc/synapse-admin/pull/240)
* 🛠️ [Server Commands panel](https://github.com/etkecc/synapse-admin/pull/365)
+* 🚀 [Server Actions page](https://github.com/etkecc/synapse-admin/pull/457)
### Development
diff --git a/screenshots/etke.cc/server-actions/page.webp b/screenshots/etke.cc/server-actions/page.webp
new file mode 100644
index 0000000..0b8f335
Binary files /dev/null and b/screenshots/etke.cc/server-actions/page.webp differ
diff --git a/src/App.tsx b/src/App.tsx
index 2b5ed3b..65709d8 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -5,8 +5,12 @@ import { Admin, CustomRoutes, Resource, resolveBrowserLocale } from "react-admin
import { Route } from "react-router-dom";
import AdminLayout from "./components/AdminLayout";
+import ServerActionsPage from "./components/etke.cc/ServerActionsPage";
import ServerNotificationsPage from "./components/etke.cc/ServerNotificationsPage";
import ServerStatusPage from "./components/etke.cc/ServerStatusPage";
+import RecurringCommandEdit from "./components/etke.cc/schedules/components/recurring/RecurringCommandEdit";
+import ScheduledCommandEdit from "./components/etke.cc/schedules/components/scheduled/ScheduledCommandEdit";
+import ScheduledCommandShow from "./components/etke.cc/schedules/components/scheduled/ScheduledCommandShow";
import UserImport from "./components/user-import/UserImport";
import germanMessages from "./i18n/de";
import englishMessages from "./i18n/en";
@@ -64,6 +68,12 @@ export const App = () => (
} />
} />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
} />
diff --git a/src/components/AdminLayout.tsx b/src/components/AdminLayout.tsx
index e199198..0446f7f 100644
--- a/src/components/AdminLayout.tsx
+++ b/src/components/AdminLayout.tsx
@@ -1,3 +1,4 @@
+import ManageHistoryIcon from "@mui/icons-material/ManageHistory";
import { useEffect, useState, Suspense } from "react";
import {
CheckForApplicationUpdate,
@@ -75,11 +76,11 @@ const AdminAppBar = () => {
const AdminMenu = props => {
const [menu, setMenu] = useState([] as MenuItem[]);
- const [serverStatusEnabled, setServerStatusEnabled] = useState(false);
+ const [etkeRoutesEnabled, setEtkeRoutesEnabled] = useState(false);
useEffect(() => {
setMenu(GetConfig().menu);
if (GetConfig().etkeccAdmin) {
- setServerStatusEnabled(true);
+ setEtkeRoutesEnabled(true);
}
}, []);
const [serverProcess, setServerProcess] = useStore("serverProcess", {
@@ -95,8 +96,9 @@ const AdminMenu = props => {
return (