+
+
-
-
:
-
-
- - - - -
-
-
-
-
-
-
- notifications()->get_notifications_edit_html(); ?>
-
+
+
+
= $loc["a_entries"]; ?>:
+
+
+
+
+
+ - - - -
+ = $loc["label_date"]; ?>
+ = $loc["label_time"]; ?>
+ = $loc["label_location"]; ?>
+ = $loc["label_note"]; ?>
+
+
+
+ = $arbeit->notifications()->get_notifications_edit_html(); ?>
+
+
+
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/suite/notifications/view.php b/suite/notifications/view.php
index c0c82e4..d443620 100644
--- a/suite/notifications/view.php
+++ b/suite/notifications/view.php
@@ -16,31 +16,48 @@
$iid = htmlspecialchars($id);
?>
-
-
-
| get_app_ini()["general"]["app_name"]; ?>
-
-
-
-
-
-
-
-
-
-
:
-
:
-
:
-
:
+
+
+
+
= $loc["title"]; ?> | = $arbeit->get_app_ini()["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $loc["h2"]; ?> = @strftime("%d.%m.%Y", strtotime($data["datum"])); ?>
+
+
+
= $loc["label_location"]; ?>: = htmlspecialchars($data["ort"]); ?>
+
= $loc["label_date"]; ?>: = @strftime("%d.%m.%Y", strtotime($data["datum"])); ?>
+
= $loc["label_time"]; ?>: = htmlspecialchars($data["uhrzeit"]); ?>
+
= $loc["label_note"]; ?>: = nl2br(htmlspecialchars($data["notiz"])); ?>
benutzer()->is_admin($arbeit->benutzer()->get_user($_SESSION["username"]))){
- echo <<< DATA
- {$loc["a_delete"]} | {$loc["a_delete_note"]}
- DATA;
+ if ($arbeit->benutzer()->is_admin($arbeit->benutzer()->get_user($_SESSION["username"]))) {
+ echo <<
+
+ 🗑️ {$loc["a_delete"]}
+
+ {$loc["a_delete_note"]}
+
+ HTML;
}
?>
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/suite/plugins/index.php b/suite/plugins/index.php
index 3bc550f..22945eb 100644
--- a/suite/plugins/index.php
+++ b/suite/plugins/index.php
@@ -8,31 +8,61 @@
$pl = new PluginBuilder();
?>
-
-
-
Plugin Hub | get_app_ini()["general"]["app_name"]; ?>
-
-
-
-
-
-
- load_plugin_view($arbeit->i18n()->sanitizeOutput($_GET["pn"]), $arbeit->i18n()->sanitizeOutput($_GET["p_view"]));
- if($f == false){
- echo "
An error occurred while getting the requested view! Probably it simply does not exist or could not be imported. More information can be found within the log.
";
- print_r($_GET);
- }
-
- e:
- ?>
-
+
+
+
+
+
Plugin Hub | = $arbeit->get_app_ini()["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ 🧩 Plugin Hub
+
+
+ 🧩 Plugin Navigation
+
+
+
+
+
+
+ ×
+ No plugin selected.
+
";
+ } else {
+ $pluginName = $arbeit->i18n()->sanitizeOutput($_GET["pn"]);
+ $pluginView = $arbeit->i18n()->sanitizeOutput($_GET["p_view"]);
+
+ $f = $pl->load_plugin_view($pluginName, $pluginView);
+
+ if ($f === false) {
+ echo "
+ ×
+ An error occurred while getting the requested view!
+ Probably it simply does not exist or could not be imported.
+ Check the log for details.
+
";
+
+ echo "Request Details: " . print_r($_GET, true) . " ";
+ }
+ }
+ ?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/suite/privacy.php b/suite/privacy.php
new file mode 100644
index 0000000..43c58f7
--- /dev/null
+++ b/suite/privacy.php
@@ -0,0 +1,48 @@
+get_app_ini();
+$loc = $arbeitszeit->i18n()->loadLanguage(NULL, "privacy");
+?>
+
+
+
+
+
+
= $loc["h1"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
= $loc["h1"] ?>
+
= $loc["intro"] ?>
+
+
+ = $loc["email_usage"] ?>
+ = $loc["plugins"] ?>
+ = $loc["locality"] ?>
+
+
+
+
+
+
+
+
+
+
+
diff --git a/suite/users/changes.php b/suite/users/changes.php
index 6e22a80..f5733ea 100644
--- a/suite/users/changes.php
+++ b/suite/users/changes.php
@@ -10,27 +10,38 @@
$data = $arbeit->benutzer()->get_user($_SESSION["username"]);
?>
-
-
-
|
-
-
-
-
-
-
-
- notifications()->get_notifications_html() ?>
-
-
|
-
-
- text(file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/CHANGELOG.md"));
+
+
+
+
= $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
+
+ notifications()->get_notifications_html(); ?>
+
+
+
+ = $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
= $loc["title"]; ?>
+ text(file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/CHANGELOG.md"));
?>
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/suite/users/settings.php b/suite/users/settings.php
index 52a9abe..87ac1b4 100644
--- a/suite/users/settings.php
+++ b/suite/users/settings.php
@@ -11,42 +11,73 @@
$data = $arbeit->benutzer()->get_user($_SESSION["username"]);
?>
-
-
-
|
-
-
-
-
-
-
-
-
:
-
:
-
:
-
:
-
:
-
-
-
-
-
/suite/users/changes.php">
- benutzer()->is_admin($arbeit->benutzer()->get_user($_SESSION["username"]))){ echo "
YOU ARE USING AN ADMIN ACCOUNT!
"; } ?>
-
- Status - Easymode: " . $arbeit->get_easymode_status($_SESSION["username"]) . "";
- ?>
-
-
-
-
-
-
-
-
: ">
-
|
-
TimeTrack Version: getTimeTrackVersion(); ?> | API Version: getToilVersion(); ?>
- benutzer()->is_admin($arbeit->benutzer()->get_user($_SESSION["username"]))){ require_once "../admin/users/settings.php"; } ?>
+
+
+
+
= $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ = $loc["title"]; ?>
+
+
+
= $loc["label_name"]; ?>: = htmlspecialchars($data["name"]); ?>
+
= $loc["label_id"]; ?>: = htmlspecialchars($data["id"]); ?>
+
= $loc["label_email"]; ?>: = htmlspecialchars($data["email"]); ?>
+
= $loc["label_username"]; ?>: = htmlspecialchars($data["username"]); ?>
+
= $loc["label_provider"]; ?>: = htmlspecialchars($_SESSION["provider"]); ?>
+
+
+
+
= $loc["note1"]; ?>
+
+ = $loc["note2_a"]; ?>
+ /suite/users/changes.php">= $loc["note2_b"]; ?>
+ = $loc["note2_c"]; ?>
+
+
+ benutzer()->is_admin($arbeit->benutzer()->get_user($_SESSION["username"]))): ?>
+
+ ⚠️ YOU ARE USING AN ADMIN ACCOUNT!
+
+
+
+
Status – Easymode: = $arbeit->get_easymode_status($_SESSION["username"]); ?>
+
+
+ = $loc["easymode_toggle"]; ?>
+
+
+
+ = $loc["support"]; ?>
+
-
+
+ benutzer()->is_admin($arbeit->benutzer()->get_user($_SESSION["username"]))): ?>
+
+
+
+
+
+
+
+
+
diff --git a/suite/worktime/all.php b/suite/worktime/all.php
index ee0c431..2a1616c 100644
--- a/suite/worktime/all.php
+++ b/suite/worktime/all.php
@@ -16,31 +16,49 @@
}
?>
-
-
-
|
-
-
-
-
-
-
|
-
-
+
+
+
+
= $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
- get_employee_worktime_html($_SESSION["username"]); ?>
-
+
+
+
+ = $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
= $loc["h2"]; ?>
+
+
+
+
+
+ = $loc["s_day"]; ?>
+ = $loc["s_begin"]; ?>
+ = $loc["s_end"]; ?>
+ = $loc["s_pstart"]; ?>
+ = $loc["s_pend"]; ?>
+ = $loc["s_location"]; ?>
+ = $loc["type"]; ?>
+
+
+
+ = $arbeit->get_employee_worktime_html($_SESSION["username"]); ?>
+
+
+
-
-
\ No newline at end of file
+
+
+
+
+
+
diff --git a/suite/worktime/vacation/index.php b/suite/worktime/vacation/index.php
index 36550b5..51ec500 100644
--- a/suite/worktime/vacation/index.php
+++ b/suite/worktime/vacation/index.php
@@ -10,28 +10,45 @@
$arbeit->auth()->login_validation();
?>
-
-
-
|
-
-
-
-
-
-
|
-
-
-
-
-
-
- :
-
-
-
-
-
-
+
+
+
+
= $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ = $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
= $loc["h2"]; ?>
+
+
+ = $loc["note1"]; ?>
+
+
+ = $loc["note2"]; ?>:
+
+
+
+ = $loc["button_submit"]; ?>
+
+
+
+
+ = $loc["note3"]; ?>
+
-
-
\ No newline at end of file
+
+
+
+
+
From 3dc0b0d9cf8870e9f29fdb7c529449e660e26e67 Mon Sep 17 00:00:00 2001
From: Ente
Date: Wed, 18 Jun 2025 00:50:20 +0200
Subject: [PATCH 3/5] Added and updated i18n files
---
.../class/i18n/suite/footer/snippets_DE.json | 4 ++
.../class/i18n/suite/footer/snippets_EN.json | 4 ++
.../class/i18n/suite/footer/snippets_NL.json | 4 ++
.../class/i18n/suite/privacy/snippets_DE.json | 10 +++
.../class/i18n/suite/privacy/snippets_EN.json | 10 +++
.../class/i18n/suite/privacy/snippets_NL.json | 10 +++
.../class/i18n/suite/status/snippets_DE.json | 56 ++++++++--------
.../class/i18n/suite/status/snippets_EN.json | 56 ++++++++--------
.../class/i18n/suite/status/snippets_NL.json | 56 ++++++++--------
suite/worktime/sick/index.php | 65 ++++++++++++-------
10 files changed, 167 insertions(+), 108 deletions(-)
create mode 100644 api/v1/class/i18n/suite/footer/snippets_DE.json
create mode 100644 api/v1/class/i18n/suite/footer/snippets_EN.json
create mode 100644 api/v1/class/i18n/suite/footer/snippets_NL.json
create mode 100644 api/v1/class/i18n/suite/privacy/snippets_DE.json
create mode 100644 api/v1/class/i18n/suite/privacy/snippets_EN.json
create mode 100644 api/v1/class/i18n/suite/privacy/snippets_NL.json
diff --git a/api/v1/class/i18n/suite/footer/snippets_DE.json b/api/v1/class/i18n/suite/footer/snippets_DE.json
new file mode 100644
index 0000000..e24aea8
--- /dev/null
+++ b/api/v1/class/i18n/suite/footer/snippets_DE.json
@@ -0,0 +1,4 @@
+{
+ "privacy": "Datenschutz",
+ "support": "Support"
+}
\ No newline at end of file
diff --git a/api/v1/class/i18n/suite/footer/snippets_EN.json b/api/v1/class/i18n/suite/footer/snippets_EN.json
new file mode 100644
index 0000000..f3bec5e
--- /dev/null
+++ b/api/v1/class/i18n/suite/footer/snippets_EN.json
@@ -0,0 +1,4 @@
+{
+ "privacy": "Privacy",
+ "support": "Support"
+}
\ No newline at end of file
diff --git a/api/v1/class/i18n/suite/footer/snippets_NL.json b/api/v1/class/i18n/suite/footer/snippets_NL.json
new file mode 100644
index 0000000..c37fefd
--- /dev/null
+++ b/api/v1/class/i18n/suite/footer/snippets_NL.json
@@ -0,0 +1,4 @@
+{
+ "privacy": "Privacyverklaring",
+ "support": "Ondersteuning"
+}
\ No newline at end of file
diff --git a/api/v1/class/i18n/suite/privacy/snippets_DE.json b/api/v1/class/i18n/suite/privacy/snippets_DE.json
new file mode 100644
index 0000000..698e98c
--- /dev/null
+++ b/api/v1/class/i18n/suite/privacy/snippets_DE.json
@@ -0,0 +1,10 @@
+{
+ "h1": "Datenschutzerklärung",
+ "intro": "Diese Anwendung verarbeitet personenbezogene Daten ausschließlich im Rahmen der Funktionsweise von TimeTrack.",
+ "data_collected": "Erhobene Daten: Vorname, Nachname, E-Mail-Adresse, Passwort (gehasht). Bei Verwendung von LDAP erfolgt die Authentifizierung über den verbundenen Verzeichnisdienst.",
+ "email_usage": "TimeTrack kann E-Mails an Benutzer versenden, z. B. für Benachrichtigungen oder zur Passwortzurücksetzung.",
+ "plugins": "Installierte Plugins können auf bestimmte Daten zugreifen, wenn dies für ihre Funktion erforderlich ist. Die Weitergabe erfolgt ohne gesonderte Nachfrage.",
+ "locality": "TimeTrack ist eine lokal installierte Open-Source-Anwendung. Alle Daten verbleiben auf dem lokalen System, sofern nicht explizit anderweitig konfiguriert.",
+ "contact": "Kontakt",
+ "contact_note": "Bei Fragen oder Anliegen zur Verarbeitung Ihrer personenbezogenen Daten können Sie sich jederzeit an uns wenden. Email:"
+}
diff --git a/api/v1/class/i18n/suite/privacy/snippets_EN.json b/api/v1/class/i18n/suite/privacy/snippets_EN.json
new file mode 100644
index 0000000..158a541
--- /dev/null
+++ b/api/v1/class/i18n/suite/privacy/snippets_EN.json
@@ -0,0 +1,10 @@
+{
+ "h1": "Privacy Policy",
+ "intro": "This application processes personal data strictly within the functional scope of TimeTrack.",
+ "data_collected": "Data collected: First name, last name, email address, password (hashed). If LDAP is used, authentication is handled via the connected directory service.",
+ "email_usage": "TimeTrack may send emails to users, e.g., for notifications or password resets.",
+ "plugins": "Installed plugins may access certain data when necessary for their function. This transfer occurs without additional confirmation.",
+ "locality": "TimeTrack is a locally installed open-source application. All data remains on the local system unless explicitly configured otherwise.",
+ "contact": "Contact",
+ "contact_note": "If you have any questions or concerns regarding the processing of your personal data, you can contact us at any time. Email:"
+}
diff --git a/api/v1/class/i18n/suite/privacy/snippets_NL.json b/api/v1/class/i18n/suite/privacy/snippets_NL.json
new file mode 100644
index 0000000..2163dce
--- /dev/null
+++ b/api/v1/class/i18n/suite/privacy/snippets_NL.json
@@ -0,0 +1,10 @@
+{
+ "h1": "Privacybeleid",
+ "intro": "Deze applicatie verwerkt persoonsgegevens uitsluitend binnen de functionele werking van TimeTrack.",
+ "data_collected": "Verzamelde gegevens: Voornaam, achternaam, e-mailadres, wachtwoord (gehasht). Bij gebruik van LDAP wordt authenticatie afgehandeld via de gekoppelde directoryservice.",
+ "email_usage": "TimeTrack kan e-mails naar gebruikers verzenden, bijvoorbeeld voor meldingen of het opnieuw instellen van wachtwoorden.",
+ "plugins": "Geïnstalleerde plugins kunnen toegang hebben tot bepaalde gegevens indien dit nodig is voor hun werking. Deze overdracht vindt plaats zonder verdere bevestiging.",
+ "locality": "TimeTrack is een lokaal geïnstalleerde open-source applicatie. Alle gegevens blijven op het lokale systeem, tenzij anders geconfigureerd.",
+ "contact": "Contact",
+ "contact_note": "Als u vragen of zorgen heeft over de verwerking van uw persoonsgegevens, kunt u te allen tijde contact met ons opnemen. E-mail:"
+}
diff --git a/api/v1/class/i18n/suite/status/snippets_DE.json b/api/v1/class/i18n/suite/status/snippets_DE.json
index 88d7532..14ec08d 100644
--- a/api/v1/class/i18n/suite/status/snippets_DE.json
+++ b/api/v1/class/i18n/suite/status/snippets_DE.json
@@ -1,30 +1,30 @@
{
- "worktime_deleted": "[BLUE]Hinweis: Arbeitszeit erfolgreich gelöscht![/BLUE]",
- "logged_out": "[BLUE]Hinweis: Erfolgreich ausgeloggt![/BLUE]",
- "error_sickness": "[RED]Fehler: Deine Krankheit konnte nicht gespeichert werden. Bitte kontaktiere deinen Administrator![/RED]",
- "error_vacation": "[RED]Fehler: Deine Urlaub konnte nicht gespeichert werden. Bitte kontaktiere deinen Administrator![/RED]",
- "vacation_added": "[GREEN]Hinweis: Dein Urlaub wurde erfolgreich gespeichert![/GREEN]",
- "sickness_added": "[BLUE]Hinweis: Deine Krankheit wurde erfolgreich gespeichert![/BLUE]",
- "notifications_entry_deleted": "Hinweis: Benachrichtigungeneintrag gelöscht![/BLUE]",
- "noperms": "[YELLOW]Hinweis: Fehlende Berechtigungen[/YELLOW]",
- "user_deleted": "[BLUE]Hinweis: Benutzer erfolgreich gelöscht![/BLUE]",
- "created_user": "[GREEN]Hinweis: Benutzer erfolgreich erstellt![/GREEN]",
- "worktime_added": "[GREEN]Hinweis: Arbeitszeit erfolgreich hinzugefügt![/GREEN]",
- "password_changed": "[YELLOW]Hinweis: Dein Passwort wurde erfolgreich geändert. Bitte melde dich erneut an.[/YELLOW]",
- "password_change_failed": "[RED]Fehler: Dein Passwort konnte nicht geändert werden, bitte kontaktiere den Support.[/RED]",
- "password_reset": "[YELLOW]Hinweis: Es wurde eine E-Mail verschickt, damit du dein Passwort zurücksetzen kannst.[/YELLOW]",
- "nodata": "[RED]Fehler: Es wurde kein Benutzername oder Passwort eingegeben.[/RED]",
- "wrongdata": "[RED]Fehler: Falsche Anmeldedaten.[/RED]",
- "worktime_review": "[GREEN]Hinweis: Arbeitszeit erfolgreich auf Prüfung gestellt![/GREEN]",
- "worktime_review_unlock": "[GREEN]Hinweis: Prüfung erfolgreich aufgehoben für Arbeitszeit![/GREEN]",
- "worktime_easymode_start": "[GREEN]Hinweis: Deine Schicht wurde erfolgreich gestartet![/GREEN]",
- "worktime_easymode_end": "[GREEN]Hinweis: Deine Schicht wurde erfolgreich beendet![/GREEN]",
- "worktime_easymode_pause_start": "[GREEN]Hinweis: Deine Pause wurde erfolgreich gestartet![/GREEN]",
- "worktime_easymode_pause_end": "[GREEN]Hinweis: Deine Pause wurde erfolgreich beendet![/GREEN]",
- "easymode_toggled": "[GREEN]Hinweis: Der Modus wurde erfolgreich gewechselt![GREEN]",
- "error": "[RED]Hinweis: Ein Fehler ist aufgetreten. Bitte überprüfe den Log, falls möglich.[/RED]",
- "statemismatch": "[RED]Fehler: Sicherheitsfehler[/RED]",
- "ldapauth": "[RED]Fehler: Die Authentifizierung über LDAP ist fehlgeschlagen.[/RED]",
- "ldapcreated": "[YELLOW]Hinweis: Bitte melde dich erneut an. Dein Benutzerkonto wurde nun erstellt. (LDAP allowed self-login)[/YELLOW]",
- "notification_not_found": "[RED]Fehler: Benachrichtigung nicht gefunden.[/RED]"
+ "worktime_deleted": "Hinweis: Arbeitszeit erfolgreich gelöscht!",
+ "logged_out": "Hinweis: Erfolgreich ausgeloggt!",
+ "error_sickness": "Fehler: Deine Krankheit konnte nicht gespeichert werden. Bitte kontaktiere deinen Administrator!",
+ "error_vacation": "Fehler: Deine Urlaub konnte nicht gespeichert werden. Bitte kontaktiere deinen Administrator!",
+ "vacation_added": "Hinweis: Dein Urlaub wurde erfolgreich gespeichert!",
+ "sickness_added": "Hinweis: Deine Krankheit wurde erfolgreich gespeichert!",
+ "notifications_entry_deleted": "Hinweis: Benachrichtigungeneintrag gelöscht!",
+ "noperms": "Hinweis: Fehlende Berechtigungen",
+ "user_deleted": "Hinweis: Benutzer erfolgreich gelöscht!",
+ "created_user": "Hinweis: Benutzer erfolgreich erstellt!",
+ "worktime_added": "Hinweis: Arbeitszeit erfolgreich hinzugefügt!",
+ "password_changed": "Hinweis: Dein Passwort wurde erfolgreich geändert. Bitte melde dich erneut an.",
+ "password_change_failed": "Fehler: Dein Passwort konnte nicht geändert werden, bitte kontaktiere den Support.",
+ "password_reset": "Hinweis: Es wurde eine E-Mail verschickt, damit du dein Passwort zurücksetzen kannst.",
+ "nodata": "Fehler: Es wurde kein Benutzername oder Passwort eingegeben.",
+ "wrongdata": "Fehler: Falsche Anmeldedaten.",
+ "worktime_review": "Hinweis: Arbeitszeit erfolgreich auf Prüfung gestellt!",
+ "worktime_review_unlock": "Hinweis: Prüfung erfolgreich aufgehoben für Arbeitszeit!",
+ "worktime_easymode_start": "Hinweis: Deine Schicht wurde erfolgreich gestartet!",
+ "worktime_easymode_end": "Hinweis: Deine Schicht wurde erfolgreich beendet!",
+ "worktime_easymode_pause_start": "Hinweis: Deine Pause wurde erfolgreich gestartet!",
+ "worktime_easymode_pause_end": "Hinweis: Deine Pause wurde erfolgreich beendet!",
+ "easymode_toggled": "Hinweis: Der Modus wurde erfolgreich gewechselt!",
+ "error": "Hinweis: Ein Fehler ist aufgetreten. Bitte überprüfe den Log, falls möglich.",
+ "statemismatch": "Fehler: Sicherheitsfehler",
+ "ldapauth": "Fehler: Die Authentifizierung über LDAP ist fehlgeschlagen.",
+ "ldapcreated": "Hinweis: Bitte melde dich erneut an. Dein Benutzerkonto wurde nun erstellt. (LDAP allowed self-login)",
+ "notification_not_found": "Fehler: Benachrichtigung nicht gefunden."
}
diff --git a/api/v1/class/i18n/suite/status/snippets_EN.json b/api/v1/class/i18n/suite/status/snippets_EN.json
index c86c7c7..baf04cf 100644
--- a/api/v1/class/i18n/suite/status/snippets_EN.json
+++ b/api/v1/class/i18n/suite/status/snippets_EN.json
@@ -1,30 +1,30 @@
{
- "worktime_deleted": "[BLUE]Note: Work time successfully deleted![/BLUE]",
- "logged_out": "[BLUE]Note: Successfully logged out![/BLUE]",
- "error_sickness": "[RED]Error: Your sickness could not be saved. Please contact your administrator![/RED]",
- "error_vacation": "[RED]Error: Your vacation could not be saved. Please contact your administrator![/RED]",
- "vacation_added": "[GREEN]Note: Your vacation has been saved successfully![/GREEN]",
- "sickness_added": "[BLUE]Note: Your sickness has been saved successfully![/BLUE]",
- "notifications_entry_deleted": "Note: Notification entry deleted![/BLUE]",
- "noperms": "[YELLOW]Note: Missing permissions[/YELLOW]",
- "user_deleted": "[BLUE]Note: User successfully deleted![/BLUE]",
- "created_user": "[GREEN]Note: User successfully created![/GREEN]",
- "worktime_added": "[GREEN]Note: Work time successfully added![/GREEN]",
- "password_changed": "[YELLOW]Note: Your password has been changed successfully. Please log in again.[/YELLOW]",
- "password_change_failed": "[RED]Error: Your password could not be changed, please contact support.[/RED]",
- "password_reset": "[YELLOW]Note: An email has been sent so you can reset your password.[/YELLOW]",
- "nodata": "[RED]Error: No username or password entered.[/RED]",
- "wrongdata": "[RED]Error: Incorrect login credentials.[/RED]",
- "worktime_review": "[GREEN]Note: Work time successfully submitted for review![/GREEN]",
- "worktime_review_unlock": "[GREEN]Note: Review successfully removed for work time![/GREEN]",
- "worktime_easymode_start": "[GREEN]Note: Your shift has started successfully![/GREEN]",
- "worktime_easymode_end": "[GREEN]Note: Your shift has ended successfully![/GREEN]",
- "worktime_easymode_pause_start": "[GREEN]Note: Your break has started successfully![/GREEN]",
- "worktime_easymode_pause_end": "[GREEN]Note: Your break has ended successfully![/GREEN]",
- "easymode_toggled": "[GREEN]Note: Mode successfully toggled![GREEN]",
- "error": "[RED]Note: An error has occurred. Please check the log if possible.[/RED]",
- "statemismatch": "[RED]Error: Security error[/RED]",
- "ldapauth": "[RED]Error: LDAP authentication failed.[/RED]",
- "ldapcreated": "[YELLOW]Note: Please log in again. Your user account has now been created. (LDAP allowed self-login)[/YELLOW]",
- "notification_not_found": "[RED]Error: Notification not found.[/RED]"
+ "worktime_deleted": "Note: Work time successfully deleted!",
+ "logged_out": "Note: Successfully logged out!",
+ "error_sickness": "Error: Your sickness could not be saved. Please contact your administrator!",
+ "error_vacation": "Error: Your vacation could not be saved. Please contact your administrator!",
+ "vacation_added": "Note: Your vacation has been saved successfully!",
+ "sickness_added": "Note: Your sickness has been saved successfully!",
+ "notifications_entry_deleted": "Note: Notification entry deleted!",
+ "noperms": "Note: Missing permissions",
+ "user_deleted": "Note: User successfully deleted!",
+ "created_user": "Note: User successfully created!",
+ "worktime_added": "Note: Work time successfully added!",
+ "password_changed": "Note: Your password has been changed successfully. Please log in again.",
+ "password_change_failed": "Error: Your password could not be changed, please contact support.",
+ "password_reset": "Note: An email has been sent so you can reset your password.",
+ "nodata": "Error: No username or password entered.",
+ "wrongdata": "Error: Incorrect login credentials.",
+ "worktime_review": "Note: Work time successfully submitted for review!",
+ "worktime_review_unlock": "Note: Review successfully removed for work time!",
+ "worktime_easymode_start": "Note: Your shift has started successfully!",
+ "worktime_easymode_end": "Note: Your shift has ended successfully!",
+ "worktime_easymode_pause_start": "Note: Your break has started successfully!",
+ "worktime_easymode_pause_end": "Note: Your break has ended successfully!",
+ "easymode_toggled": "Note: Mode successfully toggled!",
+ "error": "Note: An error has occurred. Please check the log if possible.",
+ "statemismatch": "Error: Security error",
+ "ldapauth": "Error: LDAP authentication failed.",
+ "ldapcreated": "Note: Please log in again. Your user account has now been created. (LDAP allowed self-login)",
+ "notification_not_found": "Error: Notification not found."
}
diff --git a/api/v1/class/i18n/suite/status/snippets_NL.json b/api/v1/class/i18n/suite/status/snippets_NL.json
index 5276d6b..8dee092 100644
--- a/api/v1/class/i18n/suite/status/snippets_NL.json
+++ b/api/v1/class/i18n/suite/status/snippets_NL.json
@@ -1,30 +1,30 @@
{
- "worktime_deleted": "[BLUE]Opmerking: Werkuren succesvol verwijderd![/BLUE]",
- "logged_out": "[BLUE]Opmerking: Succesvol uitgelogd![/BLUE]",
- "error_sickness": "[RED]Fout: Je ziekte kon niet worden opgeslagen. Neem contact op met je beheerder![/RED]",
- "error_vacation": "[RED]Fout: Je vakantie kon niet worden opgeslagen. Neem contact op met je beheerder![/RED]",
- "vacation_added": "[GREEN]Opmerking: Je vakantie is succesvol opgeslagen![/GREEN]",
- "sickness_added": "[BLUE]Opmerking: Je ziekte is succesvol opgeslagen![/BLUE]",
- "notifications_entry_deleted": "Opmerking: Notificatie-item verwijderd![/BLUE]",
- "noperms": "[YELLOW]Opmerking: Onvoldoende rechten[/YELLOW]",
- "user_deleted": "[BLUE]Opmerking: Gebruiker succesvol verwijderd![/BLUE]",
- "created_user": "[GREEN]Opmerking: Gebruiker succesvol aangemaakt![/GREEN]",
- "worktime_added": "[GREEN]Opmerking: Werkuren succesvol toegevoegd![/GREEN]",
- "password_changed": "[YELLOW]Opmerking: Je wachtwoord is succesvol gewijzigd. Log opnieuw in.[/YELLOW]",
- "password_change_failed": "[RED]Fout: Je wachtwoord kon niet worden gewijzigd, neem contact op met support.[/RED]",
- "password_reset": "[YELLOW]Opmerking: Er is een e-mail verstuurd om je wachtwoord te resetten.[/YELLOW]",
- "nodata": "[RED]Fout: Geen gebruikersnaam of wachtwoord ingevoerd.[/RED]",
- "wrongdata": "[RED]Fout: Onjuiste inloggegevens.[/RED]",
- "worktime_review": "[GREEN]Opmerking: Werkuren succesvol ter controle ingediend![/GREEN]",
- "worktime_review_unlock": "[GREEN]Opmerking: Controle succesvol opgeheven voor werkuren![/GREEN]",
- "worktime_easymode_start": "[GREEN]Opmerking: Je dienst is succesvol gestart![/GREEN]",
- "worktime_easymode_end": "[GREEN]Opmerking: Je dienst is succesvol beëindigd![/GREEN]",
- "worktime_easymode_pause_start": "[GREEN]Opmerking: Je pauze is succesvol gestart![/GREEN]",
- "worktime_easymode_pause_end": "[GREEN]Opmerking: Je pauze is succesvol beëindigd![/GREEN]",
- "easymode_toggled": "[GREEN]Opmerking: Modus succesvol gewijzigd![GREEN]",
- "error": "[RED]Opmerking: Er is een fout opgetreden. Controleer het logbestand indien mogelijk.[/RED]",
- "statemismatch": "[RED]Fout: Beveiligingsfout[/RED]",
- "ldapauth": "[RED]Fout: LDAP-authenticatie mislukt.[/RED]",
- "ldapcreated": "[YELLOW]Opmerking: Log opnieuw in. Je account is nu aangemaakt. (LDAP self-login toegestaan)[/YELLOW]",
- "notification_not_found": "[RED]Fout: Notificatie niet gevonden.[/RED]"
+ "worktime_deleted": "Opmerking: Werkuren succesvol verwijderd!",
+ "logged_out": "Opmerking: Succesvol uitgelogd!",
+ "error_sickness": "Fout: Je ziekte kon niet worden opgeslagen. Neem contact op met je beheerder!",
+ "error_vacation": "Fout: Je vakantie kon niet worden opgeslagen. Neem contact op met je beheerder!",
+ "vacation_added": "Opmerking: Je vakantie is succesvol opgeslagen!",
+ "sickness_added": "Opmerking: Je ziekte is succesvol opgeslagen!",
+ "notifications_entry_deleted": "Opmerking: Notificatie-item verwijderd!",
+ "noperms": "Opmerking: Onvoldoende rechten",
+ "user_deleted": "Opmerking: Gebruiker succesvol verwijderd!",
+ "created_user": "Opmerking: Gebruiker succesvol aangemaakt!",
+ "worktime_added": "Opmerking: Werkuren succesvol toegevoegd!",
+ "password_changed": "Opmerking: Je wachtwoord is succesvol gewijzigd. Log opnieuw in.",
+ "password_change_failed": "Fout: Je wachtwoord kon niet worden gewijzigd, neem contact op met support.",
+ "password_reset": "Opmerking: Er is een e-mail verstuurd om je wachtwoord te resetten.",
+ "nodata": "Fout: Geen gebruikersnaam of wachtwoord ingevoerd.",
+ "wrongdata": "Fout: Onjuiste inloggegevens.",
+ "worktime_review": "Opmerking: Werkuren succesvol ter controle ingediend!",
+ "worktime_review_unlock": "Opmerking: Controle succesvol opgeheven voor werkuren!",
+ "worktime_easymode_start": "Opmerking: Je dienst is succesvol gestart!",
+ "worktime_easymode_end": "Opmerking: Je dienst is succesvol beëindigd!",
+ "worktime_easymode_pause_start": "Opmerking: Je pauze is succesvol gestart!",
+ "worktime_easymode_pause_end": "Opmerking: Je pauze is succesvol beëindigd!",
+ "easymode_toggled": "Opmerking: Modus succesvol gewijzigd!",
+ "error": "Opmerking: Er is een fout opgetreden. Controleer het logbestand indien mogelijk.",
+ "statemismatch": "Fout: Beveiligingsfout",
+ "ldapauth": "Fout: LDAP-authenticatie mislukt.",
+ "ldapcreated": "Opmerking: Log opnieuw in. Je account is nu aangemaakt. (LDAP self-login toegestaan)",
+ "notification_not_found": "Fout: Notificatie niet gevonden."
}
diff --git a/suite/worktime/sick/index.php b/suite/worktime/sick/index.php
index 47998b6..e74be6b 100644
--- a/suite/worktime/sick/index.php
+++ b/suite/worktime/sick/index.php
@@ -8,28 +8,45 @@
$arbeit->auth()->login_validation();
?>
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
- :
-
-
-
-
-
-
+
+
+
+
= $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ = $loc["title"]; ?> | = $ini["general"]["app_name"]; ?>
+
+
+
= $loc["h2"]; ?>
+
+
+ = $loc["note1"]; ?>
+
+
+ = $loc["note2"]; ?>:
+
+
+
+ = $loc["button_submit"]; ?>
+
+
+
+
+ = $loc["note3"]; ?>
+
-
-
\ No newline at end of file
+
+
+
+
+
From 5a46d295b623eb104369f7b869bba99f01670e7d Mon Sep 17 00:00:00 2001
From: Ente
Date: Wed, 18 Jun 2025 00:52:11 +0200
Subject: [PATCH 4/5] Update Changelog and Versions
---
CHANGELOG.md | 5 +++++
README.md | 1 -
VERSION | 2 +-
composer.json | 2 +-
4 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 318a9a4..96bcf6d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# CHANGELOG
+## v8.0
+
+* Reworked the whole web UI, some elements may have not been migrated yet.
+* Plugin Hub now integrates the Navigation Bar
+
## v7.13.1.1
* Added colors to status messages
diff --git a/README.md b/README.md
index 89f8afb..aa8b019 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
# TimeTrack - small enterprise time recording
TimeTrack aims to be an easy-to-use time recording software for small enterprises.
-It's a fork from TimeTrack Oval, v6.2 (license-based model, within cloud & more features)
## Features
diff --git a/VERSION b/VERSION
index 348d260..b293f64 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-7.13.1.1
\ No newline at end of file
+8.0
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 8e248e3..9c0b299 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "TimeTrack is a PHP-written time recording tool for small businesses",
"type": "software",
"license": "GNU GPL",
- "version": "7.13.1.1",
+ "version": "8.0",
"authors": [
{
"name": "Ente",
From 15eec3cb61503da35ae9bd18c36e3a18885e7f47 Mon Sep 17 00:00:00 2001
From: Ente
Date: Fri, 25 Jul 2025 20:46:07 +0200
Subject: [PATCH 5/5] Re-added nfclogin button
Readded the NFClogin button and fixed an issue with requiring the statusMessages.arbeit.inc.php file
---
CHANGELOG.md | 5 +++++
VERSION | 2 +-
...sages.arbeit.inc.php => statusMessages.arbeit.inc.php} | 0
suite/login.php | 8 ++++++++
4 files changed, 14 insertions(+), 1 deletion(-)
rename api/v1/class/status/{statusmessages.arbeit.inc.php => statusMessages.arbeit.inc.php} (100%)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 96bcf6d..45d0842 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# CHANGELOG
+## v8.0.1
+
+* Readded the `nfclogin` button to the login page
+* Fixed failed require for `statusMessages.arbeit.inc.php`
+
## v8.0
* Reworked the whole web UI, some elements may have not been migrated yet.
diff --git a/VERSION b/VERSION
index b293f64..5210382 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-8.0
\ No newline at end of file
+8.0.1
\ No newline at end of file
diff --git a/api/v1/class/status/statusmessages.arbeit.inc.php b/api/v1/class/status/statusMessages.arbeit.inc.php
similarity index 100%
rename from api/v1/class/status/statusmessages.arbeit.inc.php
rename to api/v1/class/status/statusMessages.arbeit.inc.php
diff --git a/suite/login.php b/suite/login.php
index 713c80c..b30eb3c 100644
--- a/suite/login.php
+++ b/suite/login.php
@@ -33,6 +33,14 @@
= $language["checkbox_30days"]; ?>
= $language["button_text"]; ?>
+ read_plugin_configuration("nfclogin")["enabled"] == "true"){
+ require_once dirname(__DIR__, 1) . "/api/v1/class/plugins/plugins/nfclogin/src/Main.php";
+ $nfc = new NFClogin;
+ echo " " . $nfc->nfcloginHtml() . " ";
+ }
+ ?>
= $language["forgot_pw"]; ?>