From 22ba442193da56edee492723b760e279fea38ad9 Mon Sep 17 00:00:00 2001
From: farukvukovic <104840615+farukvukovic@users.noreply.github.com>
Date: Mon, 24 Nov 2025 12:09:36 +0100
Subject: [PATCH 01/19] #4966 Unify graphic display of all projects dropdown
---
app/Domain/Timesheets/Templates/showAll.tpl.php | 8 ++++----
.../Templates/submodules/timesheetSearchBar.sub.php | 12 ++++++------
public/assets/css/components/modernSearch.css | 4 ++--
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/app/Domain/Timesheets/Templates/showAll.tpl.php b/app/Domain/Timesheets/Templates/showAll.tpl.php
index 677a316f70..4217e7762d 100644
--- a/app/Domain/Timesheets/Templates/showAll.tpl.php
+++ b/app/Domain/Timesheets/Templates/showAll.tpl.php
@@ -97,12 +97,12 @@ function updateProjectCountInline() {
-
- displaySubmodule('timesheets-timesheetSearchBar');
+ $tpl->displaySubmodule('timesheets-timesheetSearchBar');
?>
-
+
diff --git a/app/Domain/Timesheets/Templates/submodules/timesheetSearchBar.sub.php b/app/Domain/Timesheets/Templates/submodules/timesheetSearchBar.sub.php
index 8396144991..ff9920c41b 100644
--- a/app/Domain/Timesheets/Templates/submodules/timesheetSearchBar.sub.php
+++ b/app/Domain/Timesheets/Templates/submodules/timesheetSearchBar.sub.php
@@ -2,7 +2,7 @@
/**
* Timesheet Search Bar Submodule
* Reusable search component for timesheets
- *
+ *
* This is a separate module that can be included without modifying core files
*/
defined('RESTRICTED') or exit('Restricted access');
@@ -17,7 +17,7 @@
type="text"
id="timesheetSearch"
class="modern-search-input"
- placeholder="Search by task ID, ticket, project, employee, tag, or description..."
+ placeholder="Search by ticket ID, ticket label, project, employee or tag..."
autocomplete="off"
/>
@@ -40,10 +40,10 @@ class="modern-search-input"
// Wait for DataTable to be initialized
var initAttempts = 0;
var maxAttempts = 50;
-
+
var tryInit = function() {
initAttempts++;
-
+
try {
var dt = jQuery('#allTimesheetsTable').DataTable();
if (dt && dt.settings && dt.settings().length > 0) {
@@ -53,13 +53,13 @@ class="modern-search-input"
} catch (e) {
// DataTable not ready yet
}
-
+
// Try again if not ready
if (initAttempts < maxAttempts) {
setTimeout(tryInit, 200);
}
};
-
+
// Start trying after a short delay
setTimeout(tryInit, 500);
};
diff --git a/public/assets/css/components/modernSearch.css b/public/assets/css/components/modernSearch.css
index 77d813348b..c7a991df1d 100644
--- a/public/assets/css/components/modernSearch.css
+++ b/public/assets/css/components/modernSearch.css
@@ -27,13 +27,13 @@
}
.modern-search-input::placeholder {
- color: #999;
+ color: #000000;
}
.modern-search-clear {
position: absolute;
right: 10px;
- top: 50%;
+ top: 40%;
transform: translateY(-50%);
border: none;
background: none;
From a66a10311f3c0a83b498fd67cf3038f004b4123d Mon Sep 17 00:00:00 2001
From: farukvukovic <104840615+farukvukovic@users.noreply.github.com>
Date: Mon, 24 Nov 2025 12:09:36 +0100
Subject: [PATCH 02/19] #4950 Dark theme Logs on ticket invisible
---
.idea/php.xml | 33 +++++++++++++++++++
.../Templates/submodules/timesheet.sub.php | 6 ++--
2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/.idea/php.xml b/.idea/php.xml
index 1f9ad773bc..c4bca77530 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -1,5 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -288,4 +308,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/Domain/Tickets/Templates/submodules/timesheet.sub.php b/app/Domain/Tickets/Templates/submodules/timesheet.sub.php
index 733f3b5e0b..fc53ec8122 100644
--- a/app/Domain/Tickets/Templates/submodules/timesheet.sub.php
+++ b/app/Domain/Tickets/Templates/submodules/timesheet.sub.php
@@ -69,8 +69,8 @@
-
-
+
+
__('label.date'); ?>
__('label.user'); ?>
@@ -79,7 +79,7 @@
__('label.description'); ?>
-
+
Date: Thu, 13 Nov 2025 21:33:14 +0100
Subject: [PATCH 03/19] #4726 Create custom time display setting
---
app/Domain/Timesheets/Controllers/ShowAll.php | 9 +++
.../Timesheets/Controllers/ShowMyList.php | 9 +++
.../Js/timesheetsExportFormatter.js | 40 +++++++++
.../Timesheets/Templates/showAll.tpl.php | 44 ++++++++--
.../Timesheets/Templates/showMyList.tpl.php | 50 ++++++++++--
app/Domain/Users/Controllers/EditOwn.php | 10 +++
app/Domain/Users/Templates/editOwn.blade.php | 17 ++++
app/Language/en-US.ini | 1 +
app/helpers.php | 81 +++++++++++++++++++
9 files changed, 248 insertions(+), 13 deletions(-)
create mode 100644 app/Domain/Timesheets/Js/timesheetsExportFormatter.js
diff --git a/app/Domain/Timesheets/Controllers/ShowAll.php b/app/Domain/Timesheets/Controllers/ShowAll.php
index 4d91ea89c6..9b08f7edce 100644
--- a/app/Domain/Timesheets/Controllers/ShowAll.php
+++ b/app/Domain/Timesheets/Controllers/ShowAll.php
@@ -212,6 +212,15 @@ public function run(): Response
$clientId
));
+ // Pass user's hours format preference to template for CSV export
+ $userId = session('userdata.id');
+ $hoursFormat = 'decimal';
+ if ($userId) {
+ $settingsService = app()->make(\Leantime\Domain\Setting\Services\Setting::class);
+ $hoursFormat = $settingsService->getSetting('usersettings.'.$userId.'.hours_format', 'decimal');
+ }
+ $this->tpl->assign('hoursFormat', $hoursFormat);
+
return $this->tpl->display('timesheets.showAll');
}
}
diff --git a/app/Domain/Timesheets/Controllers/ShowMyList.php b/app/Domain/Timesheets/Controllers/ShowMyList.php
index c5e2b8cc23..a882c7f8fc 100644
--- a/app/Domain/Timesheets/Controllers/ShowMyList.php
+++ b/app/Domain/Timesheets/Controllers/ShowMyList.php
@@ -64,6 +64,15 @@ public function run(): Response
paid: -1
));
+ // Pass user's hours format preference to template for CSV export
+ $userId = session('userdata.id');
+ $hoursFormat = 'decimal';
+ if ($userId) {
+ $settingsService = app()->make(\Leantime\Domain\Setting\Services\Setting::class);
+ $hoursFormat = $settingsService->getSetting('usersettings.'.$userId.'.hours_format', 'decimal');
+ }
+ $this->tpl->assign('hoursFormat', $hoursFormat);
+
return $this->tpl->display('timesheets.showMyList');
}
}
diff --git a/app/Domain/Timesheets/Js/timesheetsExportFormatter.js b/app/Domain/Timesheets/Js/timesheetsExportFormatter.js
new file mode 100644
index 0000000000..0d0737142f
--- /dev/null
+++ b/app/Domain/Timesheets/Js/timesheetsExportFormatter.js
@@ -0,0 +1,40 @@
+/**
+ * Timesheets export helper
+ *
+ * Provides a single place to resolve CSV export values while
+ * keeping the original markup untouched (aside from data attributes).
+ */
+(function () {
+ window.leantime = window.leantime || {};
+ window.leantime.timesheetsExport = window.leantime.timesheetsExport || {};
+
+ /**
+ * Resolve the value that should be exported for a cell.
+ *
+ * @param {jQuery} $node
+ * @param {string} fallbackData
+ * @returns {string}
+ */
+ window.leantime.timesheetsExport.resolveCell = function ($node, fallbackData) {
+ if (typeof $node.data('order') === 'undefined') {
+ return fallbackData;
+ }
+
+ if (! $node.hasClass('js-timesheet-hours')) {
+ return $node.data('order');
+ }
+
+ var tableFormat = ($node.closest('table[data-hours-format]').data('hours-format') || '').toString();
+
+ if (tableFormat === 'human') {
+ if (typeof $node.data('export-display') !== 'undefined') {
+ return $node.data('export-display');
+ }
+
+ return $node.text().trim();
+ }
+
+ return $node.data('order');
+ };
+})();
+
diff --git a/app/Domain/Timesheets/Templates/showAll.tpl.php b/app/Domain/Timesheets/Templates/showAll.tpl.php
index 4217e7762d..d7dba34335 100644
--- a/app/Domain/Timesheets/Templates/showAll.tpl.php
+++ b/app/Domain/Timesheets/Templates/showAll.tpl.php
@@ -4,8 +4,38 @@
foreach ($__data as $var => $val) {
$$var = $val; // necessary for blade refactor
}
+$hoursFormat = session('usersettings.hours_format', 'decimal');
?>
displayNotification() ?>
-
+
\ No newline at end of file
From 7db7f2ec34625b31cb0cec611f9b85522dd4ba2c Mon Sep 17 00:00:00 2001
From: Haris Macic
Date: Wed, 26 Nov 2025 12:06:12 +0100
Subject: [PATCH 08/19] [#5035] Add close button and reposition date labels
---
app/Domain/Timesheets/Templates/editTime.tpl.php | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/app/Domain/Timesheets/Templates/editTime.tpl.php b/app/Domain/Timesheets/Templates/editTime.tpl.php
index dc27b47325..6a3c7f8f1a 100644
--- a/app/Domain/Timesheets/Templates/editTime.tpl.php
+++ b/app/Domain/Timesheets/Templates/editTime.tpl.php
@@ -55,6 +55,9 @@
displayNotification() ?>