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

113
css/datePicker.css Normal file
View File

@@ -0,0 +1,113 @@
table.jCalendar {
border: 1px solid #888;
background: #aaa;
}
table.jCalendar th {
background: #333;
color: #fff;
font-weight: bold;
padding: 3px 5px;
}
table.jCalendar td {
background: #ccc;
color: #000;
padding: 3px 5px;
text-align: center;
}
table.jCalendar td.other-month {
background: #ddd;
color: #aaa;
}
table.jCalendar td.today {
background: #666;
color: #fff;
font-weight: bold;
}
table.jCalendar td.selected {
background: #f66;
color: #fff;
font-weight: bold;
}
table.jCalendar td.selected:hover {
background: #f33;
color: #fff;
}
table.jCalendar td:hover, table.jCalendar td.dp-hover {
background: #fff;
color: #000;
}
table.jCalendar td.disabled, table.jCalendar td.disabled:hover {
background: #bbb;
color: #888;
}
/* For the popup */
/* NOTE - you will probably want to style a.dp-choose-date - see how I did it in demo.css */
div#dp-popup {
position: absolute;
font-size: 14px;
padding: 4px;
min-height: 172px;
min-width: 171px;
border:1px solid #fff;
background-color:#333;
z-index: 500;
}
div#dp-popup h2 {
color:#fff;
font-size: 12px;
text-align: center;
margin: 2px 0;
padding: 0;
}
a#dp-close {
font-size: 11px;
padding: 4px 0;
text-align: center;
display: block;
}
a#dp-close:hover {
text-decoration: underline;
}
div#dp-popup a {
color: #000;
text-decoration: none;
padding: 3px 2px 0;
}
div#dp-popup div#dp-nav-prev {
position: absolute;
top: 2px;
left: 4px;
width: 100px;
}
div#dp-popup div#dp-nav-prev a {
float: left;
}
/* Opera needs the rules to be this specific otherwise it doesn't change the cursor back to pointer after you have disabled and re-enabled a link */
div#dp-popup div#dp-nav-prev a, div#dp-popup div#dp-nav-next a {
cursor: pointer;
}
div#dp-popup div#dp-nav-prev a.disabled, div#dp-popup div#dp-nav-next a.disabled {
cursor: default;
}
div#dp-popup div#dp-nav-next {
position: absolute;
top: 2px;
right: 4px;
width: 100px;
}
div#dp-popup div#dp-nav-next a {
float: right;
}
div#dp-popup a.disabled {
cursor: default;
color: #aaa;
}
div#dp-popup td {
cursor: pointer;
}
div#dp-popup td.disabled {
cursor: default;
}

46
css/error.css Normal file
View File

@@ -0,0 +1,46 @@
html{
height: 100%;
}
body{
background-color:#000;
color:#FFF;
height: 100%;
font: 85%/1.5 "Lucida Grande", Calibri, "Segoe Sans", Futura, "Gill Sans", "Lucida Sans", "News Gothic MT", "Bitstream Vera Sans", "Trebuchet MS", sans-serif;
margin: 0;
padding: 0;
}
#error_wrapper {
background: url('../grfx/error_bg.jpg') no-repeat;
position: absolute;
width: 425px;
height: 189px;
left: 50%;
top: 50%;
margin: -94px 0 0 -212px;
}
#error_wrapper h3 {
margin:0;
margin-bottom:5px;
}
#error_txt {
position:relative;
display:block;
margin:0;
padding:10px;
overflow:auto;
height:167px;
width:296px;
top:2px;
left:109px;
}
#error_button {
width:300;
margin-top:5px;
text-align:right;
position:relative;
display:block;
}

15
css/jquery.tabs-ie.css Normal file
View File

@@ -0,0 +1,15 @@
/*
Tabs - additional IE specific bug fixes
Recommended usage (Conditional Comments):
<!--[if lte IE 7]>
<link rel="stylesheet" href="tabs_ie.css" type="text/css" media="projection, screen" />
<![endif]-->
*/
.tabs-nav { /* auto clear */
display: inline-block;
}
.tabs-nav .tabs-disabled a {
filter: alpha(opacity=40);
}

72
css/jquery.tabs.css Normal file
View File

@@ -0,0 +1,72 @@
/* Caution! Ensure accessibility in print and other media types... */
@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */
.tabs-hide {
display: none;
}
}
/* Hide useless elements in print layouts... */
@media print {
.tabs-nav {
display: none;
}
}
/* Skin */
.tabs-nav {
list-style: none;
margin: 0;
padding: 0 0 0 65px;
}
.tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */
display: block;
clear: both;
content: " ";
}
.tabs-nav li {
float: left;
margin: 0 0 0 1px;
}
.tabs-nav a {
display: block;
position: relative;
top: 1px;
z-index: 300;
padding: 6px 2px 0;
width: 111px;
height: 18px;
color: #888;
font-size: 12px;
font-weight: bold;
line-height: 1.2;
text-align: center;
text-decoration: none;
}
.tabs-nav .tabs-selected a {
padding-top: 7px;
color: #000;
}
.tabs-nav .tabs-selected a, .tabs-nav a:hover, .tabs-nav a:focus, .tabs-nav a:active {
background-position: 0 -50px;
outline: 0; /* @ Firefox, switch off dotted border */
}
.tabs-nav .tabs-disabled a:hover, .tabs-nav .tabs-disabled a:focus, .tabs-nav .tabs-disabled a:active {
background-position: 0 0;
}
.tabs-nav .tabs-selected a:link, .tabs-nav .tabs-selected a:visited,
.tabs-nav .tabs-disabled a:link, .tabs-nav .tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */
cursor: text;
}
.tabs-nav a:hover, .tabs-nav a:focus, .tabs-nav a:active { /* @ Opera, we need to be explicit again here now... */
cursor: pointer;
}
.tabs-nav .tabs-disabled {
opacity: .4;
}
.tabs-container {
height:309px;
overflow:auto;
border-top: 1px solid #97a5b0;
padding: 1em 8px;
/*background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */
}

184
css/login.css Normal file
View File

@@ -0,0 +1,184 @@
html{
height: 100%;
}
body{
background-color:#000;
height: 100%;
font: 85%/1.5 "Lucida Grande", Calibri, "Segoe Sans", Futura, "Gill Sans", "Lucida Sans", "News Gothic MT", "Bitstream Vera Sans", "Trebuchet MS", sans-serif;
margin: 0;
padding: 0;
}
#login{
position: absolute;
width: 526px;
height: 400px;
left: 50%;
top: 50%;
margin: -200px 0 0 -263px;
}
#login form{
background:url(../grfx/login_bg_g3.png) no-repeat;
display: block;
width: 448px;
height: 298px;
margin: 0 0 0 38px;
padding: 0;
}
#login fieldset {
border: 0 none;
display: block;
margin: 135px 0 0 130px;
width: 210px;
height: 100px;
padding: 0;
position: absolute;
text-align: left;
}
#login label{
display: block;
color: #999;
height:25px;
}
#login input{
border: 1px solid #ccc;
padding: 2px;
display: block;
width: 140px;
position: relative;
margin: 0;
left: 0;
top:-2px;
}
/* of course our best friend needs some special treatment ... */
*+html #login input{ left: -130px; top:-5px; }
#login button{
position: absolute;
width: 52px;
height: 91px;
right: 0px;
bottom: 0px;
background: url(../grfx/login_button_g3.png) no-repeat;
text-indent: -1000em;
border: 0 none;
cursor: pointer;
padding: 0;
margin: 0;
}
#login select {
position: absolute;
width:100px;
top:100px;
left:0px;
border:1px solid silver;
}
#login button:hover {
background: url(../grfx/login_button_g3.png) no-repeat 0 -91px;
cursor: pointer;
}
#login p, #login p>a {
font-size:xx-small;
color: #555;
text-align: center;
}
#install {
color:#FFF;
position: absolute;
width: 526px;
height: 400px;
left: 50%;
top: 50%;
margin: -200px 0 0 -263px;
}
#install .installtext {
/* background-color:#f00;*/
width:350px;
}
#install .welcome {
font-size:1.3em;
font-weight:bold;
color:#15F000;
margin-bottom:10px;
}
#install .txt {
margin-bottom:7px;
}
#install form {
background:url(../grfx/login_bg_g3.png) no-repeat;
display: block;
width: 448px;
height: 298px;
margin: 0 0 0 38px;
padding: 0;
}
#install fieldset {
border: 0 none;
display: block;
margin: 105px 0 0 15px;
width: 420px;
height: 160px;
padding: 0;
position: absolute;
text-align: left;
}
#install label{
display: block;
color: #999;
}
#install input{
border: 1px solid #ccc;
padding: 2px;
display: block;
width: 140px;
position: relative;
margin: 0;
left: 0;
}
#install button{
position: absolute;
width: 52px;
height: 91px;
right: 0px;
bottom: 0px;
background: url(../grfx/login_button_g3.png) no-repeat;
text-indent: -1000em;
border: 0 none;
cursor: pointer;
padding: 0;
margin: 0;
}
#install button:hover {
background: url(../grfx/login_button_g3.png) no-repeat 0 -91px;
cursor: pointer;
}
#install p, #install p>a {
font-size:xx-small;
color: #555;
text-align: center;
}
#warning {
margin:5px 0 0 38px;
width:434px;
border:2px solid red;
padding:10px 5px 5px 5px;
background: url(../grfx/bg_warning.gif) repeat-x;
}
#warning p {
padding:0;
margin:0;
}