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:
40
templates/core/display.tpl
Normal file
40
templates/core/display.tpl
Normal file
@@ -0,0 +1,40 @@
|
||||
{literal}
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
$(function()
|
||||
{
|
||||
$('.date-pick').datepicker(
|
||||
{dateFormat:'mm/dd/yy',
|
||||
onSelect: function(dateText, instance) {
|
||||
if (this == $('#pick_in')[0]) {
|
||||
setTimespace(new Date(dateText),undefined);
|
||||
}
|
||||
if (this == $('#pick_out')[0]) {
|
||||
setTimespace(undefined,new Date(dateText));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
setTimespaceStart(new Date({/literal}{$timespace_in*1000}{literal}));
|
||||
setTimespaceEnd(new Date({/literal}{$timespace_out*1000}{literal}));
|
||||
updateTimespaceWarning();
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<div id="dates">
|
||||
<input type="hidden" id="pick_in" class="date-pick"/>
|
||||
<a href="#" id="ts_in" onClick="$('#pick_in').datepicker('show');return false"></a> -
|
||||
<input type="hidden" id="pick_out" class="date-pick"/>
|
||||
<a href="#" id="ts_out" onClick="$('#pick_out').datepicker('show');return false"></a>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="infos">
|
||||
<span id="n_date"></span>
|
||||
<img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/g3_display_smallclock.png" width="13" height="13" alt="Display Smallclock" />
|
||||
<span id="n_uhr">00:00</span>
|
||||
<img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/g3_display_eye.png" width="15" height="12" alt="Display Eye" />
|
||||
<strong id="display_total">{$total}</strong>
|
||||
</div>
|
||||
356
templates/core/main.tpl
Normal file
356
templates/core/main.tpl
Normal file
@@ -0,0 +1,356 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta name="robots" value="noindex,nofollow" />
|
||||
|
||||
<title>{$kga.usr.usr_name|escape:'html'} - Kimai</title>
|
||||
|
||||
<!-- Default Stylesheets -->
|
||||
<link rel="stylesheet" href="../skins/{$kga.conf.skin|escape:'html'}/styles.css" type="text/css" media="screen" title="no title" charset="utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="../skins/{$kga.conf.skin|escape:'html'}/jquery.jqplot.css" />
|
||||
<!-- /Default Stylesheets -->
|
||||
|
||||
<!-- Extension Stylesheets -->
|
||||
{foreach from=$css_extension_files item="object"}
|
||||
<link rel="stylesheet" href="{$object|escape:'html'}" type="text/css" media="screen" title="no title" charset="utf-8" />
|
||||
{/foreach}
|
||||
<!-- /Extension Stylesheets -->
|
||||
|
||||
<!-- Libs -->
|
||||
<script src="../libraries/jQuery/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../libraries/jQuery/jquery.hoverIntent.minified.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../libraries/jQuery/jquery.form.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../libraries/jQuery/jquery.newsticker.pack.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../libraries/jQuery/jquery.cookie.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../libraries/jQuery/jquery.selectboxes.min.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../libraries/jQuery/jquery-ui-1.8.5.custom.min.js" type="text/javascript" charset="utf-8"></script>
|
||||
<!--[if IE]><script src="../libraries/jQuery/excanvas.js" type="text/javascript"></script><![endif]-->
|
||||
<script src="../libraries/jQuery/jquery.jqplot.min.js" type="text/javascript"></script>
|
||||
<script src="../libraries/jQuery/jqplot.pieRenderer.min.js" type="text/javascript" ></script>
|
||||
<script src="../libraries/phpjs/strftime.min.js" type="text/javascript" ></script>
|
||||
<!-- /Libs -->
|
||||
|
||||
<!-- Default JavaScripts -->
|
||||
<script src="../js/main.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../js/init.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="../js/func.js" type="text/javascript" charset="utf-8"></script>
|
||||
<!-- /Default JavaScripts -->
|
||||
|
||||
<!-- Extension JavaScripts -->
|
||||
{foreach from=$js_extension_files item="object"}
|
||||
<script src="{$object|escape:'html'}" type="text/javascript" charset="utf-8"></script>
|
||||
{/foreach}
|
||||
<!-- /Extension JavaScripts -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var skin ="{$kga.conf.skin|escape:'html'}";
|
||||
|
||||
var lang_checkUsername = "{$kga.lang.checkUsername}";
|
||||
var lang_checkGroupname = "{$kga.lang.checkGroupname}";
|
||||
var lang_passwordsDontMatch = "{$kga.lang.passwordsDontMatch}";
|
||||
var lang_passwordTooShort = "{$kga.lang.passwordTooShort}";
|
||||
|
||||
var recstate = {$recstate};
|
||||
|
||||
{if $kga.conf.quickdelete == 2}
|
||||
var confirmText = "{$kga.lang.sure}";
|
||||
{else}
|
||||
var confirmText = undefined;
|
||||
{/if}
|
||||
|
||||
{if (isset($kga.usr))}
|
||||
var usr_ID = {$kga.usr.usr_ID};
|
||||
{else}
|
||||
var usr_ID = null;
|
||||
{/if}
|
||||
|
||||
|
||||
{if ($kga.conf.noFading)}
|
||||
fading_enabled = false;
|
||||
{/if}
|
||||
|
||||
var timeoutTicktack = 0;
|
||||
|
||||
var hour = {$current_timer_hour};
|
||||
var min = {$current_timer_min};
|
||||
var sec = {$current_timer_sec};
|
||||
var startsec = {$current_timer_start};
|
||||
var now = {$current_time};
|
||||
var offset = Math.floor(((new Date()).getTime())/1000)-now;
|
||||
|
||||
|
||||
var default_title = "{$kga.usr.usr_name|escape:'html'} - Kimai";
|
||||
var revision = {$kga.revision};
|
||||
var timespaceDateFormat = "{$kga.date_format.2|escape:'html'}";
|
||||
|
||||
var selected_knd = '{$knd_data.knd_ID}';
|
||||
var selected_pct = '{$pct_data.pct_ID}';
|
||||
var selected_evt = '{$evt_data.evt_ID}';
|
||||
|
||||
var pickerClicked = '';
|
||||
|
||||
var weekdayNames = {$weekdays_short_array};
|
||||
|
||||
$.datepicker.setDefaults(
|
||||
{literal}{{/literal} showOtherMonths :true,
|
||||
selectOtherMonths : true,
|
||||
nextText: '',
|
||||
prevText: '',
|
||||
{if ($kga.conf.noFading)}
|
||||
showAnim: '',
|
||||
{/if}
|
||||
dateFormat : 'dd.mm.yy', // TODO use correct format depending on admin panel setting
|
||||
dayNames: {$weekdays_array},
|
||||
dayNamesMin:{$weekdays_short_array},
|
||||
dayNamesShort: {$weekdays_short_array},
|
||||
monthNames: {$months_array},
|
||||
monthNamesShort: {$months_short_array},
|
||||
firstDay:1 //TODO should also be depending on user setting
|
||||
{literal}}{/literal}
|
||||
);
|
||||
|
||||
|
||||
// HOOKS
|
||||
{literal}function hook_tss(){{/literal}{$hook_tss}{literal}}{/literal}
|
||||
{literal}function hook_bzzRec(){{/literal}{$hook_bzzRec}{literal}}{/literal}
|
||||
{literal}function hook_bzzStp(){{/literal}{$hook_bzzStp}{literal}}{/literal}
|
||||
{literal}function hook_chgUsr(){lists_reload("usr");{/literal}{$hook_chgUsr}{literal}}{/literal}
|
||||
{literal}function hook_chgKnd(){lists_reload("knd");lists_reload("pct");{/literal}{$hook_chgKnd}{literal}}{/literal}
|
||||
{literal}function hook_chgPct(){lists_reload("pct");{/literal}{$hook_chgPct}{literal}}{/literal}
|
||||
{literal}function hook_chgEvt(){lists_reload("evt");{/literal}{$hook_chgEvt}{literal}}{/literal}
|
||||
{literal}function hook_filter(){{/literal}{$hook_filter}{literal}}{/literal}
|
||||
{literal}function hook_resize(){{/literal}{$hook_resize}{literal}}{/literal}
|
||||
{literal}function kill_reg_timeouts(){{/literal}{$timeoutlist}{literal}}{/literal}
|
||||
|
||||
{literal}function kimai_onload() {
|
||||
$('#extShrink').hover(lists_extShrinkShow,lists_extShrinkHide);
|
||||
$('#extShrink').click(lists_shrinkExtToggle);
|
||||
$('#kndShrink').hover(lists_kndShrinkShow,lists_kndShrinkHide);
|
||||
$('#kndShrink').click(lists_shrinkKndToggle);
|
||||
{/literal}{if !$kga.usr || $kga.usr.usr_sts < 2}
|
||||
$('#usrShrink').hover(lists_usrShrinkShow,lists_usrShrinkHide);
|
||||
$('#usrShrink').click(lists_shrinkUsrToggle);
|
||||
{else}
|
||||
$('#usrShrink').hide();
|
||||
{/if}
|
||||
|
||||
{if $kga.conf.user_list_hidden || $kga.usr.usr_sts == 2}
|
||||
lists_shrinkUsrToggle();
|
||||
{/if}
|
||||
{literal}
|
||||
$('#pct>table>tbody>tr>td>a.preselect#ps'+selected_pct+'>img').attr('src','../skins/'+skin+'/grfx/preselect_on.png');
|
||||
$('#evt>table>tbody>tr>td>a.preselect#ps'+selected_evt+'>img').attr('src','../skins/'+skin+'/grfx/preselect_on.png');
|
||||
|
||||
$('#floater').draggable({
|
||||
zIndex:20,
|
||||
ghosting:false,
|
||||
opacity:0.7,
|
||||
cursor:'move',
|
||||
handle: '#floater_handle'
|
||||
});
|
||||
|
||||
$('#n_date').html(weekdayNames[Jetzt.getDay()] + " " +strftime(timespaceDateFormat,new Date()));
|
||||
|
||||
// give browser time to render page. afterwards make sure lists are resized correctly
|
||||
setTimeout(lists_resize,500);
|
||||
clearTimeout(lists_resize);
|
||||
|
||||
|
||||
if ($('#row_evt'+selected_evt).length == 0) {
|
||||
$('#buzzer').addClass('disabled');
|
||||
}
|
||||
|
||||
resize_menu();
|
||||
|
||||
{/literal}{if $showInstallWarning}
|
||||
floaterShow("floaters.php","securityWarning","installer",0,450,200);
|
||||
{/if}{literal}
|
||||
}{/literal}
|
||||
|
||||
</script>
|
||||
|
||||
<link href="../favicon.ico" rel="shortcut icon" />
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="kimai_onload();">
|
||||
|
||||
<div id="top">
|
||||
|
||||
<div id="logo">
|
||||
<img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/g3_logo.png" width="151" height="52" alt="Logo" />
|
||||
</div>
|
||||
|
||||
<div id="menu">
|
||||
<a id="main_logout_button" href="../index.php?a=logout"><img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/g3_menu_logout.png" width="36" height="27" alt="Logout" /></a>
|
||||
<a id="main_tools_button" href="#" ><img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/g3_menu_dropdown.png" width="44" height="27" alt="Menu Dropdown" /></a>
|
||||
<br/>{$kga.lang.logged_in_as} <b>{$kga.usr.usr_name|escape:'html'}</b>
|
||||
</div>
|
||||
|
||||
<div id="main_tools_menu">
|
||||
<div class="slider">
|
||||
<a href="#" id="main_credits_button">{$kga.lang.about} Kimai</a> |
|
||||
<a href="#" id="main_prefs_button">{$kga.lang.preferences}</a> |
|
||||
<a href="#" id="main_print_timesheet_button">{$kga.lang.printtimesheet}</a>
|
||||
</div>
|
||||
<div class="end"></div>
|
||||
</div>
|
||||
|
||||
<div id="display">
|
||||
{include file="core/display.tpl"}
|
||||
</div>
|
||||
|
||||
{if $kga.usr}
|
||||
|
||||
<div id="selector">
|
||||
{include file="core/selector.tpl"}
|
||||
</div>
|
||||
|
||||
<div id="stopwatch">
|
||||
<span class="watch"><span id="h">00</span>:<span id="m">00</span>:<span id="s">00</span></span>
|
||||
</div>
|
||||
|
||||
<div id="stopwatch_edit_comment">
|
||||
<a href="#" onclick="edit_running_comment();$(this).blur();return false;"><img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/blase.gif"/></a>
|
||||
</div>
|
||||
|
||||
<div id="stopwatch_ticker">
|
||||
<ul id="ticker"><li id="ticker_knd"> </li><li id="ticker_pct"> </li><li id="ticker_evt"> </li></ul>
|
||||
</div>
|
||||
|
||||
<div id="buzzer" class="disabled">
|
||||
<div> </div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
|
||||
<div id="fliptabs" class="menuBackground">
|
||||
<ul class="menu">
|
||||
|
||||
<li class="tab act" id="exttab_0">
|
||||
<a href="javascript:void(0);" onclick="changeTab(0,'ki_timesheets/init.php'); ts_ext_triggerchange();">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">
|
||||
{if isset($kga.lang.extensions.ki_timesheet)}
|
||||
{$kga.lang.extensions.ki_timesheet}
|
||||
{else}
|
||||
Timesheet
|
||||
{/if}</span>
|
||||
<span class="cc"> </span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{foreach name="tabloop" from=$extensions item="object"}
|
||||
{if $object.EXTENSION_NAME AND $object.EXTENSION_KEY != "ki_timesheet"}
|
||||
<li class="tab norm" id="exttab_{$smarty.foreach.tabloop.iteration}">
|
||||
<a href="javascript:void(0);" onclick="changeTab({$smarty.foreach.tabloop.iteration}, '{$object.EXTENSION_INIT_FILE}'); {$object.TAB_CHANGE_TRIGGER};">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">
|
||||
{if isset($kga.lang.extensions[$object.EXTENSION_KEY])}
|
||||
{$kga.lang.extensions[$object.EXTENSION_KEY]}
|
||||
{else}
|
||||
{$object.EXTENSION_NAME|escape:'html'}
|
||||
{/if}</span>
|
||||
<span class="cc"> </span>
|
||||
</a>
|
||||
</li>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="gui">
|
||||
<div id="extdiv_0" class="ext ki_timesheet"></div>
|
||||
|
||||
{foreach name="extensionloop" from=$extensions item="object"}
|
||||
{if $object.EXTENSION_KEY != "ki_timesheet"}
|
||||
<div id="extdiv_{$smarty.foreach.extensionloop.iteration}" class="ext {$object.EXTENSION_KEY}" style="display:none;"></div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="lists" style="display:none">
|
||||
<div id="usr_head">
|
||||
<input class="livefilterfield" onkeyup="lists_live_filter('usr', this.value);" type="text" id="filt_usr" name="filt_usr"/>
|
||||
{$kga.lang.users}
|
||||
</div>
|
||||
|
||||
<div id="knd_head">
|
||||
<input class="livefilterfield" onkeyup="lists_live_filter('knd', this.value);" type="text" id="filt_knd" name="filt_knd"/>
|
||||
{$kga.lang.knds}
|
||||
|
||||
</div>
|
||||
|
||||
<div id="pct_head">
|
||||
<input class="livefilterfield" onkeyup="lists_live_filter('pct', this.value);" type="text" id="filt_pct" name="filt_pct"/>
|
||||
{$kga.lang.pcts}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="evt_head">
|
||||
<input class="livefilterfield" onkeyup="lists_live_filter('evt', this.value);" type="text" id="filt_evt" name="filt_evt"/>
|
||||
{$kga.lang.evts}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="usr">{$usr_display}</div>
|
||||
<div id="knd">{$knd_display}</div>
|
||||
<div id="pct">{$pct_display}</div>
|
||||
<div id="evt">{$evt_display}</div>
|
||||
|
||||
<div id="usr_foot">
|
||||
<a href="#" class="selectAllLink" onClick="lists_filter_select_all('usr'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="deselectAllLink" onClick="lists_filter_deselect_all('usr'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="selectInvertLink" onClick="lists_filter_select_invert('usr'); $(this).blur(); return false;"></a>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<div id="knd_foot">
|
||||
{if $kga.usr && $kga.usr.usr_sts != 2 }
|
||||
<a href="#" class="addLink" onClick="floaterShow('floaters.php','add_edit_knd',0,0,450,200); $(this).blur(); return false;"></a>
|
||||
{/if}
|
||||
<a href="#" class="selectAllLink" onClick="lists_filter_select_all('knd'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="deselectAllLink" onClick="lists_filter_deselect_all('knd'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="selectInvertLink" onClick="lists_filter_select_invert('knd'); $(this).blur(); return false;"></a>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<div id="pct_foot">
|
||||
{if $kga.usr && $kga.usr.usr_sts != 2 }
|
||||
<a href="#" class="addLink" onClick="floaterShow('floaters.php','add_edit_pct',0,0,450,200); $(this).blur(); return false;"></a>
|
||||
{/if}
|
||||
<a href="#" class="selectAllLink" onClick="lists_filter_select_all('pct'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="deselectAllLink" onClick="lists_filter_deselect_all('pct'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="selectInvertLink" onClick="lists_filter_select_invert('pct'); $(this).blur(); return false;"></a>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<div id="evt_foot">
|
||||
{if $kga.usr && $kga.usr.usr_sts != 2 }
|
||||
<a href="#" class="addLink" onClick="floaterShow('floaters.php','add_edit_evt',0,0,450,200); $(this).blur(); return false;"></a>
|
||||
{/if}
|
||||
<a href="#" class="selectAllLink" onClick="lists_filter_select_all('evt'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="deselectAllLink" onClick="lists_filter_deselect_all('evt'); $(this).blur(); return false;"></a>
|
||||
<a href="#" class="selectInvertLink" onClick="lists_filter_select_invert('evt'); $(this).blur(); return false;"></a>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<div id="extShrink"> </div>
|
||||
<div id="usrShrink"> </div>
|
||||
<div id="kndShrink"> </div>
|
||||
</div>
|
||||
|
||||
<div id="loader"> </div>
|
||||
|
||||
<div id="floater">floater</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
8
templates/core/selector.tpl
Normal file
8
templates/core/selector.tpl
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="preselection">
|
||||
|
||||
<strong>{$kga.lang.selectR}</strong><br />
|
||||
|
||||
<strong class="short">{$kga.lang.selectKND}</strong><span class="selection" id="sel_knd">{$knd_data.knd_name|escape:'html'}</span><br/>
|
||||
<strong class="short">{$kga.lang.selectPCT}</strong><span class="selection" id="sel_pct">{$pct_data.pct_name|escape:'html'}</span><br/>
|
||||
<strong class="short">{$kga.lang.selectEVT}</strong><span class="selection" id="sel_evt">{$evt_data.evt_name|escape:'html'}</span><br/>
|
||||
</div>
|
||||
142
templates/floaters/add_edit_evt.tpl
Normal file
142
templates/floaters/add_edit_evt.tpl
Normal file
@@ -0,0 +1,142 @@
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#add_edit_evt').ajaxForm(function() {
|
||||
|
||||
if ($('#evt_grps').val() == null) {
|
||||
alert("{/literal}{$kga.lang.atLeastOneGroup}{literal}");
|
||||
return;
|
||||
}
|
||||
|
||||
floaterClose();
|
||||
hook_chgEvt();
|
||||
});
|
||||
$('#floater_innerwrap').tabs({ selected: 0 });
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{if $id}{$kga.lang.edit}: {$kga.lang.evt}{else}{$kga.lang.new_evt}{/if}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuBackground">
|
||||
|
||||
<ul class="menu tabSelection">
|
||||
<li class="tab norm"><a href="#general">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.general}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
<li class="tab norm"><a href="#projects">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.pcts}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
{if $sel_grp_IDs|@count gt 1}
|
||||
<li class="tab norm"><a href="#groups">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.groups}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
{/if}
|
||||
<li class="tab norm"><a href="#comment">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.comment}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form id="add_edit_evt" action="processor.php" method="post">
|
||||
|
||||
<input name="evt_filter" type="hidden" value="0" />
|
||||
|
||||
<input name="axAction" type="hidden" value="add_edit_KndPctEvt" />
|
||||
<input name="axValue" type="hidden" value="evt" />
|
||||
<input name="id" type="hidden" value="{$id}" />
|
||||
|
||||
|
||||
<div id="floater_tabs" class="floater_content">
|
||||
|
||||
|
||||
<fieldset id="general">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="evt_name" >{$kga.lang.evt}:</label>
|
||||
<input type="text" name="evt_name" id="focus" value="{$evt_name|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="evt_default_rate" >{$kga.lang.default_rate}:</label>
|
||||
<input type="text" name="evt_default_rate" value="{$evt_default_rate|replace:'.':$kga.conf.decimalSeparator|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="evt_my_rate" >{$kga.lang.my_rate}:</label>
|
||||
<input type="text" name="evt_my_rate" id="focus" value="{$evt_my_rate|replace:'.':$kga.conf.decimalSeparator|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="evt_visible">{$kga.lang.visibility}:</label>
|
||||
<input name="evt_visible" type="checkbox" value='1' {if $evt_visible || !$id }checked="checked"{/if} />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="comment">
|
||||
<ul>
|
||||
<li>
|
||||
<label for="evt_comment">{$kga.lang.comment}:</label>
|
||||
<textarea class='comment' name='evt_comment' cols='30' rows='5' >{$evt_comment|escape:'html'}</textarea>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
{if $sel_grp_IDs|@count gt 1}
|
||||
<fieldset id="groups">
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="evt_grp" >{$kga.lang.groups}:</label>
|
||||
<select class="formfield" id="evt_grps" name="evt_grp[]" multiple size='5' style="width:255px">
|
||||
{html_options values=$sel_grp_IDs output=$sel_grp_names selected=$grp_selection}
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
{else}
|
||||
<input id="evt_grps" name="evt_grp[]" type="hidden" value="{$grp_selection.0|escape:'html'}" />
|
||||
{/if}
|
||||
|
||||
<fieldset id="projects">
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="evt_pct" >{$kga.lang.pcts}:</label>
|
||||
<select class="formfield" name="evt_pct[]" multiple size='5' style="width:255px">
|
||||
{html_options values=$sel_pct_IDs output=$sel_pct_names selected=$pct_selection}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="formbuttons">
|
||||
<input class='btn_norm' type='button' value='{$kga.lang.cancel}' onClick='floaterClose(); return false;' />
|
||||
<input class='btn_ok' type='submit' value='{$kga.lang.submit}'/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
212
templates/floaters/add_edit_knd.tpl
Normal file
212
templates/floaters/add_edit_knd.tpl
Normal file
@@ -0,0 +1,212 @@
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#add_edit_knd').ajaxForm(function() {
|
||||
|
||||
if ($('#knd_grps').val() == null) {
|
||||
alert("{/literal}{$kga.lang.atLeastOneGroup}{literal}");
|
||||
return;
|
||||
}
|
||||
|
||||
floaterClose();
|
||||
hook_chgKnd();
|
||||
});
|
||||
$('#floater_innerwrap').tabs({ selected: 0 });
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{if $id}{$kga.lang.edit}: {$kga.lang.knd}{else}{$kga.lang.new_knd}{/if}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuBackground">
|
||||
|
||||
<ul class="menu tabSelection">
|
||||
<li class="tab norm"><a href="#general">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.general}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
<li class="tab norm"><a href="#address">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.address}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
<li class="tab norm"><a href="#contact">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.contact}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
{if $sel_grp_IDs|@count gt 1}
|
||||
<li class="tab norm"><a href="#groups">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.groups}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
{/if}
|
||||
<li class="tab norm"><a href="#comment">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.comment}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form id="add_edit_knd" action="processor.php" method="post">
|
||||
|
||||
<input name="knd_filter" type="hidden" value="0" />
|
||||
|
||||
<input name="axAction" type="hidden" value="add_edit_KndPctEvt" />
|
||||
<input name="axValue" type="hidden" value="knd" />
|
||||
<input name="id" type="hidden" value="{$id}" />
|
||||
|
||||
<div id="floater_tabs" class="floater_content">
|
||||
|
||||
<fieldset id="general">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="knd_name" >{$kga.lang.knd}:</label>
|
||||
<input type="text" name="knd_name" id="focus" value="{$knd_name|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_vat" >{$kga.lang.vat}:</label>
|
||||
<input type="text" name="knd_vat" value="{$knd_vat|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_visible">{$kga.lang.visibility}:</label>
|
||||
<input name="knd_visible" type="checkbox" value='1' {if $knd_visible || !$id }checked="checked"{/if} />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_password">{$kga.lang.password}:</label>
|
||||
<input type="password" name='knd_password' cols='30' rows='3' value=""/>
|
||||
|
||||
{if !$knd_password}
|
||||
|
||||
<br/>
|
||||
<img src="../skins/{$kga.conf.skin|escape:'html'}/grfx/caution_mini.png" alt="Caution" valign=middle />
|
||||
<strong style="color:red">{$kga.lang.nopassword}</strong>
|
||||
{/if}
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="comment">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="knd_comment">{$kga.lang.comment}:</label>
|
||||
<textarea class='comment' name='knd_comment' cols='30' rows='3' >{$knd_comment|escape:'html'}</textarea>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
|
||||
{if $sel_grp_IDs|@count gt 1}
|
||||
<fieldset id="groups">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="knd_grp" >{$kga.lang.groups}:</label>
|
||||
<select class="formfield" id ="knd_grps" name="knd_grp[]" multiple size='3' style="width:255px">
|
||||
{html_options values=$sel_grp_IDs output=$sel_grp_names selected=$grp_selection}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
{else}
|
||||
<input id="knd_grps" name="knd_grp[]" type="hidden" value="{$grp_selection.0|escape:'html'}" />
|
||||
{/if}
|
||||
|
||||
<fieldset id="address">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="knd_company" >{$kga.lang.company}:</label>
|
||||
<input type="text" name="knd_company" value="{$knd_company|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_contact" >{$kga.lang.contactPerson}:</label>
|
||||
<input type="text" name="knd_contact" value="{$knd_contact|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_street" >{$kga.lang.street}:</label>
|
||||
<input type="text" name="knd_street" value="{$knd_street|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_zipcode" >{$kga.lang.zipcode}:</label>
|
||||
<input type="text" name="knd_zipcode" value="{$knd_zipcode|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_city" >{$kga.lang.city}:</label>
|
||||
<input type="text" name="knd_city" value="{$knd_city|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="contact">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="knd_tel" >{$kga.lang.telephon}:</label>
|
||||
<input type="text" name="knd_tel" value="{$knd_tel|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_fax" >{$kga.lang.fax}:</label>
|
||||
<input type="text" name="knd_fax" value="{$knd_fax|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_mobile" >{$kga.lang.mobilephone}:</label>
|
||||
<input type="text" name="knd_mobile" value="{$knd_mobile|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_mail" >{$kga.lang.mail}:</label>
|
||||
<input type="text" name="knd_mail" value="{$knd_mail|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="knd_homepage" >{$kga.lang.homepage}:</label>
|
||||
<input type="text" name="knd_homepage" value="{$knd_homepage|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="formbuttons">
|
||||
<input class='btn_norm' type='button' value='{$kga.lang.cancel}' onClick='floaterClose(); return false;' />
|
||||
<input class='btn_ok' type='submit' value='{$kga.lang.submit}' />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
161
templates/floaters/add_edit_pct.tpl
Normal file
161
templates/floaters/add_edit_pct.tpl
Normal file
@@ -0,0 +1,161 @@
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#addPct').ajaxForm(function() {
|
||||
|
||||
if ($('#pct_grps').val() == null) {
|
||||
alert("{/literal}{$kga.lang.atLeastOneGroup}{literal}");
|
||||
return;
|
||||
}
|
||||
|
||||
floaterClose();
|
||||
hook_chgPct();
|
||||
hook_chgEvt();
|
||||
});
|
||||
$('#floater_innerwrap').tabs({ selected: 0 });
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{if $id}{$kga.lang.edit}: {$kga.lang.pct}{else}{$kga.lang.new_pct}{/if}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuBackground">
|
||||
|
||||
<ul class="menu tabSelection">
|
||||
<li class="tab norm"><a href="#general">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.general}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
<li class="tab norm"><a href="#money">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.budget}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
<li class="tab norm"><a href="#evts">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.evts}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
{if $sel_grp_IDs|@count gt 1}
|
||||
<li class="tab norm"><a href="#groups">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.groups}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
{/if}
|
||||
<li class="tab norm"><a href="#comment">
|
||||
<span class="aa"> </span>
|
||||
<span class="bb">{$kga.lang.comment}</span>
|
||||
<span class="cc"> </span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form id="addPct" action="processor.php" method="post">
|
||||
<input name="pct_filter" type="hidden" value="0" />
|
||||
<input name="axAction" type="hidden" value="add_edit_KndPctEvt" />
|
||||
<input name="axValue" type="hidden" value="pct" />
|
||||
<input name="id" type="hidden" value="{$id}" />
|
||||
|
||||
|
||||
<div id="floater_tabs" class="floater_content">
|
||||
|
||||
<fieldset id ="general">
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="pct_name" >{$kga.lang.pct}:</label>
|
||||
<input type="text" name="pct_name" id="focus" value="{$pct_name|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pct_kndID" >{$kga.lang.knd}:</label>
|
||||
<select class="formfield" name="pct_kndID">
|
||||
{html_options values=$sel_knd_IDs output=$sel_knd_names selected=$knd_selection}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pct_visible">{$kga.lang.visibility}:</label>
|
||||
<input name="pct_visible" type="checkbox" value='1' {if $pct_visible || !$id}checked="checked"{/if} />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pct_internal" >{$kga.lang.internalProject}:</label>
|
||||
<input type="checkbox" name="pct_internal" value='1' {if $pct_internal}checked="checked"{/if} />
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id ="money">
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<label for="pct_default_rate" >{$kga.lang.default_rate}:</label>
|
||||
<input type="text" name="pct_default_rate" value="{$pct_default_rate|replace:'.':$kga.conf.decimalSeparator|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pct_my_rate" >{$kga.lang.my_rate}:</label>
|
||||
<input type="text" name="pct_my_rate" value="{$pct_my_rate|replace:'.':$kga.conf.decimalSeparator|escape:'html'}" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pct_budget">{$kga.lang.budget}:</label>
|
||||
<input type='text' name='pct_budget' cols='30' rows='5' value="{$pct_budget|replace:'.':$kga.conf.decimalSeparator|escape:'html'}"/>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="evts">
|
||||
<ul>
|
||||
<li>
|
||||
<label for="pct_comment">{$kga.lang.evts}:</label>
|
||||
<select class="formfield" name="pct_evt[]" multiple size='5' style="width:255px">
|
||||
{html_options values=$sel_evt_IDs output=$sel_evt_names selected=$evt_selection}
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
{if $sel_grp_IDs|@count gt 1}
|
||||
<fieldset id="groups">
|
||||
<ul>
|
||||
<li>
|
||||
<label for="pct_grp" >{$kga.lang.groups}:</label>
|
||||
<select class="formfield" id="pct_grps" name="pct_grp[]" multiple size='5' style="width:255px">
|
||||
{html_options values=$sel_grp_IDs output=$sel_grp_names selected=$grp_selection}
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
{else}
|
||||
<input id="pct_grps" name="pct_grp[]" type="hidden" value="{$grp_selection.0|escape:'html'}" />
|
||||
{/if}
|
||||
|
||||
<fieldset id="comment">
|
||||
<ul>
|
||||
<li>
|
||||
<label for="pct_comment">{$kga.lang.comment}:</label>
|
||||
<textarea class='comment' name='pct_comment' cols='30' rows='5' >{$pct_comment|escape:'html'}</textarea>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="formbuttons">
|
||||
<input class='btn_norm' type='button' value='{$kga.lang.cancel}' onClick='floaterClose(); return false;' />
|
||||
<input class='btn_ok' type='submit' value='{$kga.lang.submit}' />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
17
templates/floaters/credits.tpl
Normal file
17
templates/floaters/credits.tpl
Normal file
@@ -0,0 +1,17 @@
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{$kga.lang.about} Kimai</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="floater_content">
|
||||
|
||||
<h2>Kimai - Open Source Time Tracking</h2>
|
||||
v{$kga.version}.{$kga.revision} - © {$devtimespan} by the Kimai Core-Development-Team<br />
|
||||
{$kga.lang.credits}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
142
templates/floaters/preferences.tpl
Normal file
142
templates/floaters/preferences.tpl
Normal file
@@ -0,0 +1,142 @@
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
var options = {
|
||||
beforeSubmit: function() {
|
||||
|
||||
if ( ($('#password').val() != "" || $('#retypePassword').val() != "")
|
||||
&& !validatePassword($('#password').val(),$('#retypePassword').val()))
|
||||
return false;
|
||||
|
||||
window.location.reload();
|
||||
}
|
||||
};
|
||||
|
||||
$('#core_prefs').ajaxForm(options);
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{$kga.lang.preferences}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="floater_content">
|
||||
|
||||
<form id="core_prefs" action="processor.php" method="post">
|
||||
<fieldset>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<label for="skin">{$kga.lang.skin}:</label>
|
||||
<select name="skin">
|
||||
{html_options values=$skins output=$skins selected=$kga.conf.skin}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pw">{$kga.lang.newPassword}:</label>
|
||||
<input type="password" name="pw" size="9" id="password" /> {$kga.lang.minLength}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="pw">{$kga.lang.retypePassword}:</label>
|
||||
<input type="password" name="retypePassword" size="9" id="retypePassword" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="rate">{$kga.lang.my_rate}:</label>
|
||||
<input type="text" name="rate" size="9" value="{$rate|replace:'.':$kga.conf.decimalSeparator}"/>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="rowlimit">{$kga.lang.rowlimit}:</label>
|
||||
<input type="text" name="rowlimit" value="{$kga.conf.rowlimit}" size="9" />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="lang">{$kga.lang.lang}:</label>
|
||||
<select name="lang">
|
||||
{html_options values=$langs output=$langs selected=$kga.conf.lang}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="timezone">{$kga.lang.timezone}:</label>
|
||||
<select name="timezone">
|
||||
{html_options values=$timezones output=$timezones selected=$kga.conf.timezone}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{$kga.lang.sublistAnnotations}:
|
||||
<select name="sublistAnnotations">
|
||||
<option value="0" {if $kga.conf.sublistAnnotations==0}selected="selected"{/if}>{$kga.lang.timelabel}</option>
|
||||
<option value="1" {if $kga.conf.sublistAnnotations==1}selected="selected"{/if}>{$kga.lang.xp_ext.costs}</option>
|
||||
<option value="2" {if $kga.conf.sublistAnnotations==2}selected="selected"{/if}>{$kga.lang.timelabel} & {$kga.lang.xp_ext.costs}</option>
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="autoselection"></label>
|
||||
<input type="checkbox" name="autoselection" value="1" {if $kga.conf.autoselection}checked{/if} /> {$kga.lang.autoselection}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{$kga.lang.quickdelete}:
|
||||
<select name="quickdelete">
|
||||
<option value="0" {if $kga.conf.quickdelete==0}selected="selected"{/if}>{$kga.lang.quickdeleteHide}</option>
|
||||
<option value="1" {if $kga.conf.quickdelete==1}selected="selected"{/if}>{$kga.lang.quickdeleteShow}</option>
|
||||
<option value="2" {if $kga.conf.quickdelete==2}selected="selected"{/if}>{$kga.lang.quickdeleteShowConfirm}</option>
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="flip_pct_display"></label>
|
||||
<input type="checkbox" name="flip_pct_display" value="1" {if $kga.conf.flip_pct_display}checked{/if} /> {$kga.lang.flip_pct_display}
|
||||
</li>
|
||||
<li>
|
||||
<label for="pct_comment_flag"></label>
|
||||
<input type="checkbox" name="pct_comment_flag" value="1" {if $kga.conf.pct_comment_flag}checked{/if} /> {$kga.lang.pct_comment_flag}
|
||||
</li>
|
||||
<li>
|
||||
<label for="showIDs"></label>
|
||||
<input type="checkbox" name="showIDs" value="1" {if $kga.conf.showIDs}checked{/if} /> {$kga.lang.showIDs}
|
||||
</li>
|
||||
<li>
|
||||
<label for="noFading"></label>
|
||||
<input type="checkbox" name="noFading" value="1" {if $kga.conf.noFading}checked{/if} /> {$kga.lang.noFading}
|
||||
</li>
|
||||
<li>
|
||||
<label for="user_list_hidden"></label>
|
||||
<input type="checkbox" name="user_list_hidden" value="1" {if $kga.conf.user_list_hidden}checked{/if} /> {$kga.lang.user_list_hidden}
|
||||
</li>
|
||||
<li>
|
||||
<label for="hideClearedEntries"></label>
|
||||
<input type="checkbox" name="hideClearedEntries" value="1" {if $kga.conf.hideClearedEntries}checked{/if} /> {$kga.lang.hideClearedEntries}
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<input name="axAction" type="hidden" value="editPrefs" />
|
||||
<input name="id" type="hidden" value="0" />
|
||||
|
||||
<div id="formbuttons">
|
||||
<input class='btn_norm' type='button' value='{$kga.lang.cancel}' onClick='floaterClose(); return false;' />
|
||||
<input class='btn_ok' type='submit' value='{$kga.lang.submit}' />
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
19
templates/floaters/security_warning.tpl
Normal file
19
templates/floaters/security_warning.tpl
Normal file
@@ -0,0 +1,19 @@
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{$kga.lang.securityWarning}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="floater_content" style="padding:20px">
|
||||
|
||||
<h2 style="color:red">{$kga.lang.securityWarning}</h2>
|
||||
|
||||
<b>{$kga.lang.installerWarningHeadline}</b> <br/><br/>
|
||||
|
||||
{$kga.lang.installerWarningText}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
180
templates/floaters/timesheet.tpl
Normal file
180
templates/floaters/timesheet.tpl
Normal file
@@ -0,0 +1,180 @@
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#help').hide();
|
||||
|
||||
var availableEndDay = 9;
|
||||
var availableStartDay = 9;
|
||||
|
||||
|
||||
var tpl_template = {/literal}{$tpl_template|@json_encode}{literal};
|
||||
var tpl_jasper_url = tpl_template[0].tpl_jasper_url;
|
||||
var tpl_jasper_usr = tpl_template[0].tpl_jasper_usr;
|
||||
var tpl_jasper_pwd = tpl_template[0].tpl_jasper_pwd;
|
||||
availableEndDay = tpl_template[0].tpl_start_weekday;
|
||||
availableStartDay = tpl_template[0].tpl_end_weekday;
|
||||
|
||||
|
||||
function disableEndDays(date) {
|
||||
var day = date.getDay();
|
||||
if(availableEndDay < 7){
|
||||
var str1 = "beforeShowDay: ";
|
||||
return [(day == availableEndDay), ""];
|
||||
}else{
|
||||
return [(day == 0 ||day == 1 || day == 2 ||day == 3 || day == 4 ||day == 5 || day == 6), ""];
|
||||
}
|
||||
}
|
||||
|
||||
function disableStartDays(date) {
|
||||
var day = date.getDay();
|
||||
if(availableStartDay < 7){
|
||||
var str1 = "beforeShowDay: ";
|
||||
return [(day == availableStartDay), ""];
|
||||
}else{
|
||||
return [(day == 0 ||day == 1 || day == 2 ||day == 3 || day == 4 ||day == 5 || day == 6), ""];
|
||||
}
|
||||
}
|
||||
|
||||
$('#tpl_ID').change(function(){
|
||||
var x = document.getElementById("tpl_ID").selectedIndex;
|
||||
tpl_template = {/literal}{$tpl_template|@json_encode}{literal};
|
||||
for (var i = 0; i < tpl_template.length; i++){
|
||||
// look for the entry with a matching `code` value
|
||||
if (tpl_template[i].tpl_index == x){
|
||||
// we found it
|
||||
tpl_jasper_url = tpl_template[i].tpl_jasper_url;
|
||||
tpl_jasper_usr = tpl_template[i].tpl_jasper_usr;
|
||||
tpl_jasper_pwd = tpl_template[i].tpl_jasper_pwd;
|
||||
availableEndDay = tpl_template[i].tpl_start_weekday;
|
||||
availableStartDay = tpl_template[i].tpl_end_weekday;
|
||||
}
|
||||
}
|
||||
//availableEndDay = tpl_end_weekday; // disable wednesdays
|
||||
$("#select_in_day").datepicker("refresh");
|
||||
});
|
||||
|
||||
$('#tpl_view_btn').click(function(){
|
||||
var user_id = "{/literal}{$kga.usr.usr_ID}{literal}";
|
||||
var fromdate = $('#select_in_day').val();
|
||||
var todate = $('#select_out_day').val();
|
||||
var jasper_server_base_url = "{/literal}{$kga.lang.jasper_server_base_url}{literal}";
|
||||
if (fromdate != '' && todate != ''){
|
||||
var urlstring = 'https://tms.alteram.co.za/digital.php'.concat("?from_date=", fromdate, "&to_date=", todate, "&kimaiuserid=", user_id, "&reportid=", tpl_jasper_url);
|
||||
//var urlstring = jasper_server_base_url.concat(tpl_jasper_url,".html?from_date=", fromdate, "&to_date=", todate, "&KimaiUserId=", user_id, "&j_username=", tpl_jasper_usr, "&j_password=", tpl_jasper_pwd);
|
||||
window.open(urlstring);
|
||||
}else{
|
||||
window.alert("Please select date range!");
|
||||
}
|
||||
});
|
||||
|
||||
$('#tpl_download_btn').click(function(){
|
||||
var user_id = "{/literal}{$kga.usr.usr_ID}{literal}";
|
||||
var fromdate = $('#select_in_day').val();
|
||||
var todate = $('#select_out_day').val();
|
||||
var jasper_server_base_url = "{/literal}{$kga.lang.jasper_server_base_url}{literal}";
|
||||
if (fromdate != '' && todate != ''){
|
||||
var urlstring = 'https://tms.alteram.co.za/manual.php'.concat("?from_date=", fromdate, "&to_date=", todate, "&kimaiuserid=", user_id, "&reportid=", tpl_jasper_url);
|
||||
// var urlstring = jasper_server_base_url.concat(tpl_jasper_url,".pdf?from_date=", fromdate, "&to_date=", todate, "&KimaiUserId=", user_id, "&j_username=", tpl_jasper_usr, "&j_password=", tpl_jasper_pwd);
|
||||
window.open(urlstring);
|
||||
}else{
|
||||
window.alert("Please select date range!");
|
||||
}
|
||||
});
|
||||
|
||||
setupDatePicker()
|
||||
|
||||
function setupDatePicker(){
|
||||
$('#select_in_day').datepicker({
|
||||
dateFormat: 'yy-mm-dd',
|
||||
closeText: 'Clear',
|
||||
beforeShowDay: disableEndDays,
|
||||
onSelect: function(dateText, instance) {
|
||||
$('#select_out_day').datepicker( "option", $('#select_in_day').datepicker("getDate") );
|
||||
}
|
||||
});
|
||||
$('#select_out_day').datepicker({
|
||||
dateFormat: 'yy-mm-dd',
|
||||
closeText: 'Clear',
|
||||
beforeShowDay: disableStartDays,
|
||||
onSelect: function(dateText, instance) {
|
||||
$('#select_in_day').datepicker( "option", $('#select_out_day').datepicker("getDate") );
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{if $id}{$kga.lang.edit}{else}{$kga.lang.printtimesheet}{/if}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
<a href="#" class="help" onClick="$(this).blur(); $('#help').slideToggle();">{$kga.lang.help}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="help">
|
||||
<div class="content">
|
||||
{$kga.lang.dateAndTimeHelp}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuBackground">
|
||||
|
||||
<ul class="menu tabSelection">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form id="mn_ext_form_add_edit_record" action="../extensions/ki_timesheets/processor.php" method="post">
|
||||
<input name="id" type="hidden" value="{$id}" />
|
||||
<input name="axAction" type="hidden" value="add_edit_record" />
|
||||
|
||||
|
||||
<div id="floater_tabs" class="floater_content">
|
||||
<fieldset id="general">
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<label for="tpl_ID" >{$kga.lang.tpl}:</label>
|
||||
<select class="formfield" name="tpl_ID" id="tpl_ID">
|
||||
{html_options values=$sel_tpl_IDs output=$sel_tpl_names}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
{* -------------------------------------------------------------------- *}
|
||||
|
||||
<li>
|
||||
<label for="select_in_day">{$kga.lang.fromdate}:</label>
|
||||
<input id='select_in_day' type='text' name='select_in_day' value='{$select_in_day|escape:'html'}' maxlength='10' size='10' tabindex='5' autocomplete="off" onChange="mn_timeToDuration();" {if $kga.conf.autoselection}onClick="this.select();"{/if} />
|
||||
</li>
|
||||
<li>
|
||||
<label for="select_out_day">{$kga.lang.todate}:</label>
|
||||
<input id='select_out_day' type='text' name='select_out_day' value='{$select_out_day|escape:'html'}' maxlength='10' size='10' tabindex='6' autocomplete="off" onChange="mn_timeToDuration();" {if $kga.conf.autoselection}onClick="this.select();"{/if} />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</fieldset>
|
||||
{* -------------------------------------------------------------------- *}
|
||||
|
||||
{* -------------------------------------------------------------------- *}
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="formbuttons">
|
||||
<input class='btn_norm' type='button' value='{$kga.lang.cancel}' onClick='floaterClose(); return false;' />
|
||||
<input class='btn_ok' id="tpl_view_btn" type='button' value='{$kga.lang.view}'/>
|
||||
<input class='btn_ok' id="tpl_download_btn" type='button' value='{$kga.lang.download}'/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{* -------------------------------------------------------------------- *}
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
168
templates/floaters/timesheet.tpl.old
Normal file
168
templates/floaters/timesheet.tpl.old
Normal file
@@ -0,0 +1,168 @@
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#help').hide();
|
||||
|
||||
var availableEndDay = 9;
|
||||
var availableStartDay = 9;
|
||||
|
||||
|
||||
var tpl_template = {/literal}{$tpl_template|@json_encode}{literal};
|
||||
var tpl_jasper_url = tpl_template[0].tpl_jasper_url;
|
||||
var tpl_jasper_usr = tpl_template[0].tpl_jasper_usr;
|
||||
var tpl_jasper_pwd = tpl_template[0].tpl_jasper_pwd;
|
||||
availableEndDay = tpl_template[0].tpl_start_weekday;
|
||||
availableStartDay = tpl_template[0].tpl_end_weekday;
|
||||
|
||||
|
||||
function disableEndDays(date) {
|
||||
var day = date.getDay();
|
||||
if(availableEndDay < 7){
|
||||
var str1 = "beforeShowDay: ";
|
||||
return [(day == availableEndDay), ""];
|
||||
}else{
|
||||
return [(day == 0 ||day == 1 || day == 2 ||day == 3 || day == 4 ||day == 5 || day == 6), ""];
|
||||
}
|
||||
}
|
||||
|
||||
function disableStartDays(date) {
|
||||
var day = date.getDay();
|
||||
if(availableStartDay < 7){
|
||||
var str1 = "beforeShowDay: ";
|
||||
return [(day == availableStartDay), ""];
|
||||
}else{
|
||||
return [(day == 0 ||day == 1 || day == 2 ||day == 3 || day == 4 ||day == 5 || day == 6), ""];
|
||||
}
|
||||
}
|
||||
|
||||
$('#tpl_ID').change(function(){
|
||||
var x = document.getElementById("tpl_ID").selectedIndex;
|
||||
tpl_template = {/literal}{$tpl_template|@json_encode}{literal};
|
||||
for (var i = 0; i < tpl_template.length; i++){
|
||||
// look for the entry with a matching `code` value
|
||||
if (tpl_template[i].tpl_index == x){
|
||||
// we found it
|
||||
tpl_jasper_url = tpl_template[i].tpl_jasper_url;
|
||||
tpl_jasper_usr = tpl_template[i].tpl_jasper_usr;
|
||||
tpl_jasper_pwd = tpl_template[i].tpl_jasper_pwd;
|
||||
availableEndDay = tpl_template[i].tpl_start_weekday;
|
||||
availableStartDay = tpl_template[i].tpl_end_weekday;
|
||||
}
|
||||
}
|
||||
//availableEndDay = tpl_end_weekday; // disable wednesdays
|
||||
$("#select_in_day").datepicker("refresh");
|
||||
});
|
||||
|
||||
$('#tpl_view_btn').click(function(){
|
||||
var user_id = "{/literal}{$kga.usr.usr_ID}{literal}";
|
||||
var fromdate = $('#select_in_day').val();
|
||||
var todate = $('#select_out_day').val();
|
||||
var jasper_server_base_url = "{/literal}{$kga.lang.jasper_server_base_url}{literal}";
|
||||
var urlstring = jasper_server_base_url.concat(tpl_jasper_url,".html?from_date=", fromdate, "&to_date=", todate, "&KimaiUserId=", user_id, "&j_username=", tpl_jasper_usr, "&j_password=", tpl_jasper_pwd);
|
||||
window.open(urlstring);
|
||||
});
|
||||
|
||||
$('#tpl_download_btn').click(function(){
|
||||
var user_id = "{/literal}{$kga.usr.usr_ID}{literal}";
|
||||
var fromdate = $('#select_in_day').val();
|
||||
var todate = $('#select_out_day').val();
|
||||
var jasper_server_base_url = "{/literal}{$kga.lang.jasper_server_base_url}{literal}";
|
||||
var urlstring = jasper_server_base_url.concat(tpl_jasper_url,".pdf?from_date=", fromdate, "&to_date=", todate, "&KimaiUserId=", user_id, "&j_username=", tpl_jasper_usr, "&j_password=", tpl_jasper_pwd);
|
||||
window.open(urlstring);
|
||||
});
|
||||
|
||||
setupDatePicker()
|
||||
|
||||
function setupDatePicker(){
|
||||
$('#select_in_day').datepicker({
|
||||
dateFormat: 'yy-mm-dd',
|
||||
closeText: 'Clear',
|
||||
beforeShowDay: disableEndDays,
|
||||
onSelect: function(dateText, instance) {
|
||||
$('#select_out_day').datepicker( "option", $('#select_in_day').datepicker("getDate") );
|
||||
}
|
||||
});
|
||||
$('#select_out_day').datepicker({
|
||||
dateFormat: 'yy-mm-dd',
|
||||
closeText: 'Clear',
|
||||
beforeShowDay: disableStartDays,
|
||||
onSelect: function(dateText, instance) {
|
||||
$('#select_in_day').datepicker( "option", $('#select_out_day').datepicker("getDate") );
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<div id="floater_innerwrap">
|
||||
|
||||
<div id="floater_handle">
|
||||
<span id="floater_title">{if $id}{$kga.lang.edit}{else}{$kga.lang.printtimesheet}{/if}</span>
|
||||
<div class="right">
|
||||
<a href="#" class="close" onClick="floaterClose();">{$kga.lang.close}</a>
|
||||
<a href="#" class="help" onClick="$(this).blur(); $('#help').slideToggle();">{$kga.lang.help}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="help">
|
||||
<div class="content">
|
||||
{$kga.lang.dateAndTimeHelp}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuBackground">
|
||||
|
||||
<ul class="menu tabSelection">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form id="mn_ext_form_add_edit_record" action="../extensions/ki_timesheets/processor.php" method="post">
|
||||
<input name="id" type="hidden" value="{$id}" />
|
||||
<input name="axAction" type="hidden" value="add_edit_record" />
|
||||
|
||||
|
||||
<div id="floater_tabs" class="floater_content">
|
||||
<fieldset id="general">
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<label for="tpl_ID" >{$kga.lang.tpl}:</label>
|
||||
<select class="formfield" name="tpl_ID" id="tpl_ID">
|
||||
{html_options values=$sel_tpl_IDs output=$sel_tpl_names}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
{* -------------------------------------------------------------------- *}
|
||||
|
||||
<li>
|
||||
<label for="select_in_day">{$kga.lang.fromdate}:</label>
|
||||
<input id='select_in_day' type='text' name='select_in_day' value='{$select_in_day|escape:'html'}' maxlength='10' size='10' tabindex='5' autocomplete="off" onChange="mn_timeToDuration();" {if $kga.conf.autoselection}onClick="this.select();"{/if} />
|
||||
</li>
|
||||
<li>
|
||||
<label for="select_out_day">{$kga.lang.todate}:</label>
|
||||
<input id='select_out_day' type='text' name='select_out_day' value='{$select_out_day|escape:'html'}' maxlength='10' size='10' tabindex='6' autocomplete="off" onChange="mn_timeToDuration();" {if $kga.conf.autoselection}onClick="this.select();"{/if} />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</fieldset>
|
||||
{* -------------------------------------------------------------------- *}
|
||||
|
||||
{* -------------------------------------------------------------------- *}
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="formbuttons">
|
||||
<input class='btn_norm' type='button' value='{$kga.lang.cancel}' onClick='floaterClose(); return false;' />
|
||||
<input class='btn_ok' id="tpl_view_btn" type='button' value='{$kga.lang.view}'/>
|
||||
<input class='btn_ok' id="tpl_download_btn" type='button' value='{$kga.lang.download}'/>
|
||||
</div>
|
||||
|
||||
{* -------------------------------------------------------------------- *}
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
44
templates/install/welcome.tpl
Normal file
44
templates/install/welcome.tpl
Normal file
@@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<link rel="SHORTCUT ICON" href="favicon.ico">
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" value="noindex,nofollow" />
|
||||
<title>Kimai Installer</title>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="css/login.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id='install'>
|
||||
|
||||
<form action="installer/install.php" method="post">
|
||||
<fieldset>
|
||||
|
||||
<div class="installtext">
|
||||
<div class="welcome">Welcome!</div>
|
||||
|
||||
<div class="txt">We need to set up the database first.</div>
|
||||
|
||||
<div class="txt">
|
||||
Due to security reasons you should erase the "install.php" file after installation!
|
||||
</div>
|
||||
|
||||
<div class="txt">
|
||||
<input type="checkbox" name="accept" value=1 style="width:15px;height:15px;display:inline;">
|
||||
|
||||
{if $disagreedGPL}<strong style="color:red">{/if} I accept the terms of the GNU GPL Version 3{if $disagreedGPL}</strong>{/if}
|
||||
|
||||
{if $disagreedGPL}<br /><img src="grfx/caution_small.png" alt="Caution" /> <span style="color:red">You have to accept the the terms!</span>{/if}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<button type="submit">Install</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
{include file="misc/copyrightnotes.tpl"}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
53
templates/lists/evt.tpl
Normal file
53
templates/lists/evt.tpl
Normal file
@@ -0,0 +1,53 @@
|
||||
{cycle values="odd,even" reset=true print=false}
|
||||
<table>
|
||||
|
||||
<tbody>
|
||||
|
||||
{section name=row loop=$arr_evt}
|
||||
{if $arr_evt[row].evt_visible}
|
||||
|
||||
<tr id="row_evt{$arr_evt[row].evt_ID}" class="{cycle values="odd,even"}" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td nowrap class="option">
|
||||
{if $kga.usr && $kga.usr.usr_sts != 2}
|
||||
<a href ="#" onClick="editSubject('evt',{$arr_evt[row].evt_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/edit2.gif' width='13' height='13' alt='{$kga.lang.edit}' title='{$kga.lang.edit} (ID:{$arr_evt[row].evt_ID})' border='0' /></a>
|
||||
{/if}
|
||||
<a href ="#" onClick="lists_update_filter('evt',{$arr_evt[row].evt_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/filter.png' width='13' height='13' alt='{$kga.lang.filter}' title='{$kga.lang.filter}' border='0' /></a>
|
||||
|
||||
<a href ="#" class="preselect" onClick="buzzer_preselect('evt',{$arr_evt[row].evt_ID},'{$arr_evt[row].evt_name|replace:"'":"\\'"|escape:'html'}',0,0); return false;" id="ps{$arr_evt[row].evt_ID}"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/preselect_off.png' width='13' height='13' alt='{$kga.lang.select}' title='{$kga.lang.select} (ID:{$arr_evt[row].evt_ID})' border='0' /></a>
|
||||
</td>
|
||||
|
||||
<td width="100%" class="events" onClick="buzzer_preselect('evt',{$arr_evt[row].evt_ID},'{$arr_evt[row].evt_name|replace:"'":"\\'"|escape:'html'}',0,0); return false;" onmouseover="lists_change_color(this,true);" onmouseout="lists_change_color(this,false);">
|
||||
{if $arr_evt[row].evt_visible != 1}<span style="color:#bbb">{/if}
|
||||
{if $kga.conf.showIDs == 1}<span class="ids">{$arr_evt[row].evt_ID}</span> {/if}{$arr_evt[row].evt_name|escape:'html'}
|
||||
{if $arr_evt[row].evt_visible != 1}</span>{/if}
|
||||
</td>
|
||||
|
||||
<td nowrap class="annotation">
|
||||
{$arr_evt[row].zeit|escape:'html'}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
{/if}
|
||||
{/section}
|
||||
|
||||
|
||||
|
||||
|
||||
{if $arr_evt == '0'}
|
||||
<tr>
|
||||
<td colspan='3'>
|
||||
<strong style="color:red">{$kga.lang.noItems}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
52
templates/lists/knd.tpl
Normal file
52
templates/lists/knd.tpl
Normal file
@@ -0,0 +1,52 @@
|
||||
{cycle values="odd,even" reset=true print=false}
|
||||
<table>
|
||||
|
||||
<tbody>
|
||||
|
||||
{section name=row loop=$arr_knd}
|
||||
{if $arr_knd[row].knd_visible}
|
||||
|
||||
<tr id="row_knd{$arr_knd[row].knd_ID}" class="knd knd{$arr_knd[row].knd_ID} {cycle values="odd,even"}">
|
||||
|
||||
|
||||
{* --- option cell ---*}
|
||||
|
||||
<td nowrap class="option">
|
||||
|
||||
|
||||
{if $kga.usr && $kga.usr.usr_sts != 2}
|
||||
<a href ="#" onClick="editSubject('knd',{$arr_knd[row].knd_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/edit2.gif' width='13' height='13' alt='{$kga.lang.edit}' title='{$kga.lang.edit}' border='0' /></a>
|
||||
{/if}
|
||||
|
||||
<a href ="#" onClick="lists_update_filter('knd',{$arr_knd[row].knd_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/filter.png' width='13' height='13' alt='{$kga.lang.filter}' title='{$kga.lang.filter}' border='0' /></a>
|
||||
|
||||
</td>
|
||||
|
||||
{* --- name cell ---*}
|
||||
<td width="100%" class="clients" onmouseover="lists_change_color(this,true);" onmouseout="lists_change_color(this,false);" onClick="lists_knd_prefilter({$arr_knd[row].knd_ID},'highlight'); $(this).blur(); return false;">
|
||||
{if $arr_knd[row].knd_visible != 1}<span style="color:#bbb">{/if}
|
||||
{if $kga.conf.showIDs == 1}<span class="ids">{$arr_knd[row].knd_ID}</span> {/if}{$arr_knd[row].knd_name|escape:'html'}
|
||||
{if $arr_knd[row].knd_visible != 1}</span>{/if}
|
||||
</td>
|
||||
|
||||
|
||||
{* --- annotation cell ---*}
|
||||
<td nowrap class="annotation">
|
||||
{$arr_knd[row].zeit|escape:'html'}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
{/if}
|
||||
{/section}
|
||||
|
||||
{if $arr_knd == '0'}
|
||||
<tr>
|
||||
<td colspan='3'>
|
||||
<strong style="color:red">{$kga.lang.noItems}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
54
templates/lists/pct.tpl
Normal file
54
templates/lists/pct.tpl
Normal file
@@ -0,0 +1,54 @@
|
||||
{cycle values="odd,even" reset=true print=false}
|
||||
<table>
|
||||
|
||||
<tbody>
|
||||
|
||||
{section name=row loop=$arr_pct}
|
||||
{if $arr_pct[row].pct_visible}
|
||||
<tr id="row_pct{$arr_pct[row].pct_ID}" class="pct knd{$arr_pct[row].knd_ID} {cycle values="odd,even"}" >
|
||||
|
||||
|
||||
<td nowrap class="option">
|
||||
|
||||
{if $kga.usr && $kga.usr.usr_sts != 2}
|
||||
<a href ="#" onClick="editSubject('pct',{$arr_pct[row].pct_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/edit2.gif' width='13' height='13' alt='{$kga.lang.edit}' title='{$kga.lang.edit} (ID:{$arr_pct[row].pct_ID})' border='0' /></a>
|
||||
{/if}
|
||||
<a href ="#" onClick="lists_update_filter('pct',{$arr_pct[row].pct_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/filter.png' width='13' height='13' alt='{$kga.lang.filter}' title='{$kga.lang.filter}' border='0' /></a>
|
||||
|
||||
<a href ="#" class="preselect" onClick="buzzer_preselect('pct',{$arr_pct[row].pct_ID},'{$arr_pct[row].pct_name|replace:"'":"\\'"|escape:'html'}',{$arr_pct[row].knd_ID},'{$arr_pct[row].knd_name|replace:"'":"\\'"|escape:'html'}'); lists_reload('evt'); return false;" id="ps{$arr_pct[row].pct_ID}"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/preselect_off.png' width='13' height='13' alt='{$kga.lang.select}' title='{$kga.lang.select} (ID:{$arr_pct[row].pct_ID})' border='0' /></a>
|
||||
</td>
|
||||
|
||||
<td width="100%" class="projects" onmouseover="lists_change_color(this,true);" onmouseout="lists_change_color(this,false);" onClick="buzzer_preselect('pct',{$arr_pct[row].pct_ID},'{$arr_pct[row].pct_name|replace:"'":"\\'"|escape:'html'}',{$arr_pct[row].knd_ID},'{$arr_pct[row].knd_name|replace:"'":"\\'"|escape:'html'}'); lists_reload('evt'); return false;">
|
||||
{if $arr_pct[row].pct_visible != 1}<span style="color:#bbb">{/if}
|
||||
{if $kga.conf.flip_pct_display}
|
||||
{if $kga.conf.showIDs == 1}<span class="ids">{$arr_pct[row].pct_ID}</span> {/if}<span class="lighter">{$arr_pct[row].knd_name|truncate:30:"..."|escape:'html'}:</span> {$arr_pct[row].pct_name|escape:'html'}
|
||||
{else}
|
||||
{if $kga.conf.pct_comment_flag == 1}
|
||||
{if $kga.conf.showIDs == 1}<span class="ids">{$arr_pct[row].pct_ID}</span> {/if}{$arr_pct[row].pct_name|escape:'html'} <span class="lighter">{if $arr_pct[row].pct_comment}({$arr_pct[row].pct_comment|truncate:30:"..."|escape:'html'}){else}<span class="lighter">({$arr_pct[row].knd_name|truncate:30:"..."|escape:'html'})</span>{/if}</span>
|
||||
{else}
|
||||
{if $kga.conf.showIDs == 1}<span class="ids">{$arr_pct[row].pct_ID}</span> {/if}{$arr_pct[row].pct_name|escape:'html'} <span class="lighter">({$arr_pct[row].knd_name|truncate:30:"..."|escape:'html'})</span>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $arr_pct[row].pct_visible != 1}</span>{/if}
|
||||
</td>
|
||||
|
||||
|
||||
<td class="annotation">
|
||||
{$arr_pct[row].zeit|escape:'html'}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
{/if}
|
||||
{/section}
|
||||
|
||||
{if $arr_pct == '0'}
|
||||
<tr>
|
||||
<td nowrap colspan='3'>
|
||||
<strong style="color:red">{$kga.lang.noItems}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
44
templates/lists/usr.tpl
Normal file
44
templates/lists/usr.tpl
Normal file
@@ -0,0 +1,44 @@
|
||||
{cycle values="odd,even" reset=true print=false}
|
||||
<table>
|
||||
|
||||
<tbody>
|
||||
|
||||
{section name=row loop=$arr_usr}
|
||||
|
||||
<tr id="row_usr{$arr_usr[row].usr_ID}" class="{cycle values="odd,even"}">
|
||||
|
||||
|
||||
|
||||
{* --- option cell ---*}
|
||||
|
||||
<td nowrap class="option">
|
||||
<a href ="#" onClick="lists_update_filter('usr',{$arr_usr[row].usr_ID}); $(this).blur(); return false;"><img src='../skins/{$kga.conf.skin|escape:'html'}/grfx/filter.png' width='13' height='13' alt='{$kga.lang.filter}' title='{$kga.lang.filter}' border='0' /></a>
|
||||
|
||||
</td>
|
||||
|
||||
{* --- name cell ---*}
|
||||
<td width="100%" class="clients">
|
||||
{$arr_usr[row].usr_name|escape:'html'}
|
||||
</td>
|
||||
|
||||
|
||||
{* --- annotation cell ---*}
|
||||
<td nowrap class="annotation">
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
{/section}
|
||||
|
||||
{if $arr_usr == '0'}
|
||||
<tr>
|
||||
<td colspan='3'>
|
||||
<strong style="color:red">{$kga.lang.noItems}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
43
templates/login/header.tpl
Normal file
43
templates/login/header.tpl
Normal file
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<link rel="SHORTCUT ICON" href="favicon.ico">
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" value="noindex,nofollow" />
|
||||
<title>Kimai {$kga.lang.login}</title>
|
||||
<script type="text/javascript" src="libraries/jQuery/jquery-1.4.2.min.js"></script>
|
||||
<script type="text/javascript" src="libraries/jQuery/jquery.cookie.js"></script>
|
||||
{if $kga.check_at_startup}
|
||||
<script type="text/javascript" src="js/main.js"></script>
|
||||
{/if}
|
||||
{literal}<script type='text/javascript'>function setfocus() { document.form1.name.focus(); }</script>
|
||||
<script type='text/javascript'>
|
||||
$(function(){
|
||||
$("#JSwarning").remove();
|
||||
$.cookie('KimaiCookietest', 'jes');
|
||||
KimaiCookietest = $.cookie('KimaiCookietest');
|
||||
if (KimaiCookietest == 'jes') {
|
||||
$("#cookiewarning").remove();
|
||||
$.cookie('KimaiCookietest', '', {expires: -1});
|
||||
}
|
||||
if (!$("#warning p").size()) $("#warning").remove();
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $kga.check_at_startup}
|
||||
{literal}
|
||||
<script type='text/javascript'>
|
||||
$(function(){
|
||||
checkupdate("core/");
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="css/login.css" />
|
||||
</head>
|
||||
{if not $kga.virtual_users}<body onLoad='setfocus();'>
|
||||
{else}<body>
|
||||
{/if}
|
||||
31
templates/login/panel.tpl
Normal file
31
templates/login/panel.tpl
Normal file
@@ -0,0 +1,31 @@
|
||||
<div id='login'>
|
||||
<form action='index.php?a=checklogin' name='form1' method='post'>
|
||||
<fieldset>
|
||||
<label for='kimaiusername'>
|
||||
{$kga.lang.username}:
|
||||
</label>
|
||||
<input type='text' name='name' />
|
||||
<label for='kimaipassword'>
|
||||
{$kga.lang.password}:
|
||||
</label>
|
||||
<input type='password' name='password' />
|
||||
{$selectbox}
|
||||
<button type='submit'>Submit</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
|
||||
<div id="warning">
|
||||
<p id="JSwarning"><strong style='color:red'>{$kga.lang.JSwarning}</strong></p>
|
||||
<p id="cookiewarning"><strong style='color:red'>{$kga.lang.cookiewarning}</strong></p>
|
||||
</div>
|
||||
{include file="misc/copyrightnotes.tpl"}
|
||||
{*
|
||||
YOU ARE NOT ALLOWED TO REMOVE THE COPYRIGHT NOTES! YOU MAY CHANGE THE APPEARANCE OF THE LOGIN WINDOW
|
||||
BUT REMOVING THE CREDITS IS STRICTLY PROHIBITED. If you feel uncomfortable with this rule - use
|
||||
other time tracking software, please.
|
||||
|
||||
*}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
16
templates/misc/copyrightnotes.tpl
Normal file
16
templates/misc/copyrightnotes.tpl
Normal file
@@ -0,0 +1,16 @@
|
||||
{*
|
||||
YOU ARE NOT ALLOWED TO REMOVE THE COPYRIGHT NOTES! YOU MAY CHANGE THE APPEARANCE OF THE LOGIN WINDOW
|
||||
BUT REMOVING THE CREDITS IS STRICTLY PROHIBITED. If you feel uncomfortable with this rule - use
|
||||
other time tracking software, please.
|
||||
|
||||
*}
|
||||
<p>
|
||||
<strong><a hrefKimai <span style="color:red">{$kga.status}</span> {$kga.version}.{$kga.revision}</strong> - © {$devtimespan} the <a href="http://www.kimai.org" target="_blank">Kimai Team</a><br />
|
||||
This software is provided under the terms and conditions of the <a href="COPYING">General Public License Version 3</a><br />
|
||||
Powered by
|
||||
<a href="http://www.jquery.com" target="_blank">jQuery</a> |
|
||||
<a href="http://www.xajax-project.org/" target="_blank">xajax</a> |
|
||||
<a href="http://smarty.php.net/" target="_blank">Smarty</a> |
|
||||
<a href="http://php.net/" target="_blank">PHP</a> |
|
||||
<a href="http://mysql.com/" target="_blank">MySQL</a>
|
||||
</p>
|
||||
34
templates/misc/error.tpl
Normal file
34
templates/misc/error.tpl
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<link rel="SHORTCUT ICON" href="favicon.ico">
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" value="noindex,nofollow" />
|
||||
<title>Kimai Error</title>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="css/error.css" />
|
||||
<script src="../../libraries/jQuery/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script>
|
||||
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#ok').focus();
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="error_wrapper">
|
||||
<dix id="error_txt">
|
||||
<h3>{$headline}</h3>
|
||||
{$message}
|
||||
</dix>
|
||||
<div id="error_button">
|
||||
<form action="index.php" method="post"><input type="submit" value="OK" id="ok"/></form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
38
templates/misc/updater.tpl
Normal file
38
templates/misc/updater.tpl
Normal file
@@ -0,0 +1,38 @@
|
||||
<!-- FILE IS TEMPORARILY NOT IN USE! -->
|
||||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<link rel="SHORTCUT ICON" href="favicon.ico">
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" value="noindex,nofollow" />
|
||||
<title>Kimai {$kga.lang.login}</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="css/login.css" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<body>
|
||||
|
||||
<div id='login'>
|
||||
<div align='center'>
|
||||
|
||||
<img src='grfx/caution.png' />
|
||||
<h1 style="color:red">UPDATE WARNING!</h1>
|
||||
|
||||
<div id="message" style="width:500px">
|
||||
<p><strong style='color:#C81C22'>{$kga.lang.update}</strong></p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a href='updater.php?ok=1' title="{$kga.lang.updateNow}"><img src='grfx/but_update.gif' border = "0"/></a></p>
|
||||
<p style="color:#C81C22;">CAUTION: If you use more than one database (server_ext_database),<br />each of them has to be updated seperately!
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{$refresh}
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user