Initial commit: Kimai TMS

Kimai time management system (PHP 5.6 / MySQL) with custom extensions:
- Budget tracking (ki_budget)
- Change request form (ki_changerequest)
- Invoice generation (ki_invoice)
- Expense tracking (ki_expenses)
- Flexi time (ki_flexitime)
- Export, admin panel, timesheets, tasks, summary

Database: ~900K time entries, 2,000+ users, 439 projects.
Config: includes/autoconf.php — localhost/kimai/kimai
This commit is contained in:
TMS
2026-06-18 21:20:26 +00:00
commit eb299c9131
1099 changed files with 359817 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
/**
* This file is part of
* Kimai - Open Source Time Tracking // http://www.kimai.org
* (c) 2006-2009 Kimai-Development-Team
*
* Kimai is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; Version 3, 29 June 2007
*
* Kimai is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kimai; If not, see <http://www.gnu.org/licenses/>.
*/
function changerequest_ext_onload() {
$("#loader").hide();
}
function changerequest_ext_resize() {
// function must exist, so init can register it as callback
}
var background = new Array("#000000","#FFFF00","#76EE00","#CD3333","#B23AEE","#CDBE70");
var text = new Array("#FFFFFF","#000000","#000000","#FFFFFF","#FFFFFF","#000000");
function changerequest_ext_triggerchange() {
$("#testdiv").append(" This has been put here on tab change.");
array_target = Math.round(Math.random()*background.length);
$("#testdiv").css("color",text[array_target]);
$("#testdiv").css("background-color",background[array_target]);
}
function changerequest_ext_triggerTSS() {
$.post(changerequest_ext_path + "processor.php", { axAction: "test", axValue: 0, id: 0 },
function(data) {
$('#demo_timespace > span.timespace_target').html(data);
});
}
function changerequest_ext_triggerREC() {
logfile("trigger REC changerequest_ext");
}
function changerequest_ext_triggerSTP() {
logfile("trigger STP changerequest_ext");
}

View File

@@ -0,0 +1,53 @@
/**
* This file is part of
* Kimai - Open Source Time Tracking // http://www.kimai.org
* (c) 2006-2009 Kimai-Development-Team
*
* Kimai is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; Version 3, 29 June 2007
*
* Kimai is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kimai; If not, see <http://www.gnu.org/licenses/>.
*/
/****************************************************************************************************
*
* IMPORTANT NOTE:
*
* If you like a function to run when your extension is loaded into the extension-frame
* you CAN'T use the methods you'd normally use when the dom is ready build! So something like:
*
*
* $(document).ready(function(){
* [do something stupid...]
* });
*
*
* ... won't work here.
* This is because the dom is already finished loading BEFORE the extensions are hooked in!
* When You want JavaScript or jQuery to do something when your extension is loaded into its
* place in the *existing* DOM, you have to put a function-call *into* the content you load.
* You can also use the jQuery ready-funktion there!
*
****************************************************************************************************/
// set path of extension
var changerequest_ext_path = "../extensions/ki_changerequest/";
$(document).ready(function(){
var changerequest_ext_resizeTimer = null;
$(window).bind('resize', function() {
if (changerequest_ext_resizeTimer) clearTimeout(changerequest_ext_resizeTimer);
changerequest_ext_resizeTimer = setTimeout(changerequest_ext_resize, 500);
});
});