}
close(CFG);
if (($strget =~ /^{/) && ($strget =~ /}$/)){
+ if ($p->{get} eq "auth"){
+ my $tmpall = JSON::PP::decode_json($strget);
+ $html->{result} = $tmpall->{$p->{app}};
+ } else {
$html->{result} = JSON::PP::decode_json($strget);
+ }
+
}
}
if (exists($p->{set}) && (exists($p->{page}))){
<a class="dropdown-item" href="javascript:app.loadpage('modules/presences/weeklypresences.html');">Présences par Semaine</a>
</div>
</div>
- <!-- <button class="btn btn-default" id="mnubtn_staff" onclick="app.loadpage('modules/staff/staff.html');"><img src="img/Team.svg" style="width: 32px; height: 32px;"/><br/>Personnel</button> -->
<button class="btn btn-default" id="mnubtn_calendar" onclick="app.loadpage('modules/calendar/index.html');"><img src="img/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendrier</button>
- <!-- <div class="btn-group" role="group">
- <button type="button" id="mnubtn_calendar" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendriers
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_calendar">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calchilds.html');">Organisation Enfants</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calactivity.html');">Organisation Personnel</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calvacancy.html');">Congés</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calglobal.html');">vacances / jours feriés</a>
- </div>
- </div> -->
- <!-- <div class="btn-group" role="group">
- <button type="button" id="mnubtn_accounting" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Moneybag.svg" style="width: 32px; height: 32px;"/><br/>Décompte
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_accounting">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accounting.html');">Décompte par mois</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accountingchild.html');">Décompte par enfant</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accountingopeninvoice.html');">Factures ouvertes</a>
-
- <div class="dropdown-divider"></div>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/checkservice.html');">Import/Export Check-Service </a>
- <div class="dropdown-divider"></div>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accountingyear.html');">Bilan annuelle</a>
- </div>
- </div> -->
-
- <!-- <button class="btn btn-default" id="mnubtn_waitlist" onclick="app.loadpage('modules/waitlist/waitlist.html');"><img src="img/Sandclock.svg" style="width: 32px; height: 32px;"/><br/>Liste d'attente</button> -->
- <!-- <button class="btn btn-default" id="mnubtn_forms" onclick="app.loadpage('modules/forms/forms.html');"><img src="img/Archive.svg" style="width: 32px; height: 32px;"/><br/>Formulaires</button>-->
- <!-- <div class="btn-group" role="group">
- <button type="button" id="mnubtn_logbook" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Book.svg" style="width: 32px; height: 32px;"/><br/>Livrets de bord
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_accounting">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/logbook/logactivity.html');">Livret des activités</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/logbook/logchild.html');">Livret des enfants</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/logbook/logcominterne.html');">Communication Interne</a>
- </div>
- </div> -->
+
</div>
</div>
<select id="crechelist" class="btn btn-default" class="form-control" onchange="app.changesite();">
</select>
- <!--<button type="button" class="btn btn-default dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <span class="sr-only">Toggle Dropdown</span>
- </button>
- <div class="dropdown-menu" id="crechelist">
- </div>-->
+
</div>
- <!-- <button class="btn btn-default" id="mnubtn_print" onclick="app.loadprintpreview();"><img src="img/Print.svg" style="width: 32px; height: 32px;"/><br/>Impression</button> -->
- <!-- <div class="btn-group" role="group">
- <button id="btnGroupInfo" type="button" id="mnubtn_info" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Info.svg" style="width: 32px; height: 32px;"/><br/>Info
- </button> -->
- <!-- <div class="dropdown-menu" style="left: -140px;" aria-labelledby="btnGroupInfo">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/info/about.html');">About</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/info/settings.html');">Configuration Logiciel</a>
- </div> -->
- <!-- </div> -->
</div>
</div>
loadsites: function(){
$.ajax({
encoding:"UTF-8",
- url: app.api + 'prefs.cgi?get=auth' ,
+ url: app.api + 'prefs.cgi?get=auth&app=creorga' ,
success: function (data){
console.log(data);
if (data.result.db){
var appdb = {
dbfile: parent.app.currentdb,
- url: 'http://' + location.host + '/apps_dks_lu/api/sqlite.cgi?',
+ url: ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + '/apps_dks_lu/api/sqlite.cgi?',
dbquery: function(sQuery){
var type='querysorted';
var result= {sqldata:[]};
-var globalreq = {
- send_request: function(data){
+// var globalreq = {
+// send_request: function(data){
- if (data.page){
- if (data.data){
- console.log(window.location.pathname);
- var page = data.page.substring(data.page.lastIndexOf("/") + 1);
- page = page.replace(/\.html/,'');
- console.log(page);
- $.ajax({
- encoding:"UTF-8",
- url: location.protocol + '://' + location.host + '/apps_dks_lu/api/api/prefs.cgi?page=' + page + '&set=' +encodeURIComponent('{"data":' + JSON.stringify(data.data) +'}') ,
- crossDomain: true,
- success: function (data){
- var result=data.result;
- },
- error: function(data){
- alert("Error:" + JSON.stringify(data));
- console.log("Error:" + JSON.stringify(data));
- },
- async:false
- });
- }
+// if (data.page){
+// if (data.data){
+// console.log(window.location.pathname);
+// var page = data.page.substring(data.page.lastIndexOf("/") + 1);
+// page = page.replace(/\.html/,'');
+// console.log(page);
+// $.ajax({
+// encoding:"UTF-8",
+// url: location.protocol + '://' + location.host + '/apps_dks_lu/api/api/prefs.cgi?page=' + page + '&set=' +encodeURIComponent('{"data":' + JSON.stringify(data.data) +'}') ,
+// crossDomain: true,
+// success: function (data){
+// var result=data.result;
+// },
+// error: function(data){
+// alert("Error:" + JSON.stringify(data));
+// console.log("Error:" + JSON.stringify(data));
+// },
+// async:false
+// });
+// }
- var path = location.protocol + '://' + location.host + '/creorga_lu/';
- path = path + data.page + '?';
- path += 'db=' + apppref.curcfg.db;
- window.location = path;
- }
- }
-}
+// var path = location.protocol + '://' + location.host + '/creorga_lu/';
+// path = path + data.page + '?';
+// path += 'db=' + apppref.curcfg.db;
+// window.location = path;
+// }
+// }
+// }
var apppref ={
- url: location.protocol + '//' + location.host + '/apps_dks_lu/creorga/',
- api: location.protocol + '//' + location.host + '/apps_dks_lu/api/',
+ url: ('https' == document.location.protocol ? 'https' : 'http') + '://' + '//' + location.host + '/apps_dks_lu/creorga/',
+ api: ('https' == document.location.protocol ? 'https' : 'http') + '://' + '//' + location.host + '/apps_dks_lu/api/',
curcfg: null,
getSearchParams: function (k){
//alert(location.href);
var candelete = 0;
function initdata(){
//appdb.dbfile=parent.app.currentdb;
- var pconfig = apppref.getpreference("childs");
+ pconfig = apppref.getpreference("childs");
//console.log("CFG");
//console.log(pconfig);
// if (configdata) {
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ x="0px" y="0px" width="50px" height="50px" viewBox="0 0 657.4 779">
+<path style="fill:#ffffff;" d="M244.625,514.953L534.374,514.953C657.399,514.953,759.245,629.203,779,779L0,779C19.7567,629.203,121.601,514.953,244.625,514.953z M389.501,0C483.781,0 560.231,97.4994 560.231,217.873 560.231,338.184 483.781,435.744 389.501,435.744 295.221,435.744 218.769,338.184 218.769,217.873 218.769,97.4994 295.221,0 389.501,0z"/>
+</svg>
\ No newline at end of file
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
- <link rel="icon" href="img/default32.png">
+ <link rel="icon" href="img/hourtrax32.png">
- <title>Creorga </title>
+ <title>Hourtrax</title>
- <link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
+ <link href="../../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
</head>
<div class="mr-auto">
<div class="btn-group" role="group" aria-label="Main">
- <button class="btn btn-default" id="mnubtn_childs" onclick="app.loadpage('modules/childs/childs.html');"><img src="img/Children.svg" style="width: 32px; height: 32px;"/><br/>Enfants</button>
+ <button class="btn btn-default" id="mnubtn_staff" onclick="app.loadpage('modules/staff/stafflist.html');"><img src="img/Team.svg" style="width: 32px; height: 32px;"/><br/>Employé(e)s</button>
+ <button class="btn btn-default" id="mnubtn_staff" onclick="app.loadpage('modules/staff/coworker.html');"><img src="img/User.svg" style="width: 32px; height: 32px;"/><br/>Employé(e)s</button>
<div class="btn-group" role="group">
- <button type="button" id="mnubtn_presences" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Check.svg" style="width: 32px; height: 32px;"/><br/>Présences
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_presences">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/presences/dailypresences.html');">Présences par jour</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/presences/weeklypresences.html');">Présences par Semaine</a>
- </div>
+ <button class="btn btn-default" id="mnubtn_calendar" onclick="app.loadpage('modules/calendar/calorganisation.html');"><img src="img/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendrier Organisation</button>
+ <button class="btn btn-default" id="mnubtn_calendar" onclick="app.loadpage('modules/calendar/calvacancy.html');"><img src="img/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendrier Congés</button>
+ <button type="button" class="btn btn-default" id="mnubtn_creche" onclick="app.loadpage('modules/company/locations.html');"><img src="img/Home.svg" style="width: 32px; height: 32px;"/><br/>Lieux</button>
</div>
- <button class="btn btn-default" id="mnubtn_staff" onclick="app.loadpage('modules/staff/staff.html');"><img src="img/Team.svg" style="width: 32px; height: 32px;"/><br/>Personnel</button>
- <div class="btn-group" role="group">
- <button type="button" id="mnubtn_calendar" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendriers
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_calendar">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calchilds.html');">Organisation Enfants</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calactivity.html');">Organisation Personnel</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calvacancy.html');">Congés</a>
- <!-- <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calglobal.html');">vacances / jours feriés</a> -->
- </div>
- </div>
- <!-- <div class="btn-group" role="group">
- <button type="button" id="mnubtn_accounting" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Moneybag.svg" style="width: 32px; height: 32px;"/><br/>Décompte
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_accounting">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accounting.html');">Décompte par mois</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accountingchild.html');">Décompte par enfant</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accountingopeninvoice.html');">Factures ouvertes</a>
-
- <div class="dropdown-divider"></div>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/checkservice.html');">Import/Export Check-Service </a>
- <div class="dropdown-divider"></div>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/accounting/accountingyear.html');">Bilan annuelle</a>
- </div>
- </div> -->
-
- <!-- <button class="btn btn-default" id="mnubtn_waitlist" onclick="app.loadpage('modules/waitlist/waitlist.html');"><img src="img/Sandclock.svg" style="width: 32px; height: 32px;"/><br/>Liste d'attente</button> -->
- <!-- <button class="btn btn-default" id="mnubtn_forms" onclick="app.loadpage('modules/forms/forms.html');"><img src="img/Archive.svg" style="width: 32px; height: 32px;"/><br/>Formulaires</button>-->
- <!-- <div class="btn-group" role="group">
- <button type="button" id="mnubtn_logbook" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Book.svg" style="width: 32px; height: 32px;"/><br/>Livrets de bord
- </button>
- <div class="dropdown-menu" aria-labelledby="mnubtn_accounting">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/logbook/logactivity.html');">Livret des activités</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/logbook/logchild.html');">Livret des enfants</a>
- <a class="dropdown-item" href="javascript:app.loadpage('modules/logbook/logcominterne.html');">Communication Interne</a>
- </div>
- </div> -->
- </div>
- </div>
- <div class="ml-auto">
- <div class="btn-group" role="group" aria-label="Right">
- <div class="btn-group">
- <button type="button" class="btn btn-default" id="mnubtn_creche" onclick="app.loadpage('modules/creche/creche.html');"><img src="img/Home.svg" style="width: 32px; height: 32px;"/><br/>Crèche</button>
- <button type="button" class="btn btn-default dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <span class="sr-only">Toggle Dropdown</span>
- </button>
- <div class="dropdown-menu" id="crechelist">
- </div>
-</div>
- <button class="btn btn-default" id="mnubtn_print" onclick="app.loadprintpreview();"><img src="img/Print.svg" style="width: 32px; height: 32px;"/><br/>Impression</button>
- <div class="btn-group" role="group">
- <button id="btnGroupInfo" type="button" id="mnubtn_info" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <img src="img/Info.svg" style="width: 32px; height: 32px;"/><br/>Info
- </button>
- <div class="dropdown-menu" style="left: -140px;" aria-labelledby="btnGroupInfo">
- <a class="dropdown-item" href="javascript:app.loadpage('modules/info/about.html');">About</a>
- <!-- <a class="dropdown-item" href="javascript:app.loadpage('modules/info/settings.html');">Configuration Logiciel</a> -->
- </div>
- </div>
</div>
-
</div>
-
+ <div class="ml-auto">
+ <div class="btn-group" role="group" aria-label="Right">
+ <div class="btn-group">
+ <button type="button" class="btn btn-default" id="mnubtn_creche" onclick="app.loadpage('modules/company/company.html');"><img src="img/Home.svg" style="width: 32px; height: 32px;"/><br/>Entreprise</button>
+ <select id="crechelist" class="btn btn-default" class="form-control" onchange="app.changesite();">
+
+ </select>
+ </div>
+ </div>
+
+ </div>
</nav>
<main role="main" class="container-fluid">
- <iframe src="modules/info/settings.html" id="appframe" style="width: 100%; height: calc(100vh - 90px); margin: 0px; padding: 0px;"></iframe>
+ <iframe src="modules/staff/stafflist.html" id="appframe" style="width: 100%; height: calc(100vh - 90px); margin: 0px; padding: 0px;"></iframe>
</main><!-- /.container -->
- <script src="node_modules/jquery/dist/jquery.min.js"></script>
- <script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
- <!-- <script src="js/modules.js"></script> -->
+ <script src="../../vendor/jquery/jquery.min.js"></script>
+ <script src="../../vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
+ <script src="js/modules.js"></script>
<script src="js/app.js"></script>
</body>
-var eventMethod = window.addEventListener? "addEventListener": "attachEvent";
-var eventer = window[eventMethod];
-var messageEvent = eventMethod === "attachEvent"? "onmessage": "message";
-eventer(messageEvent, function (e) {
- // if (e.origin !== 'http://the-trusted-iframe-origin.com') return;
- if (e.data === "updatecrechelist" || e.message === "updatecrechelist") {
- //alert('Message from iframe just came!');
- // app.getinfo();
- app.loadsites();
- // console.log(e);
- }
-});
-
document.addEventListener("keydown", function(e) {
//document.onkeydown = function(e) {
// "I" key
return false;
}
+
var app = {
- currentdb: "0",
- info: null,
- loadpage: function(page){
- console.log("load Page => " + page);
+ url: ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + '/apps_dks_lu/apps/hourtrax/',
+ api: ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + '/apps_dks_lu/api/',
+ browser: function(){
+ console.log(navigator.userAgent);
+ var brx = "unknown";
+ if (/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)){
+ brx = "Safari";
+ }
+ if (/Chrome/.test(navigator.userAgent)){
+ brx ="Chrome";
+ }
+ if (/Edge/.test(navigator.userAgent)){
+ brx ="Edge";
+ }
+ if (/Firefox/.test(navigator.userAgent)){
+ brx ="Firefox";
+ }
+ if (/OPR/.test(navigator.userAgent)){
+ brx ="Opera";
+ }
+ if (/Trident/.test(navigator.userAgent)){
+ brx ="IE";
+ }
+ return brx;
+ },
+ currentdb: null,
+ info: null,
+ loadpage: function(page,data = null){
+ // console.log("load Page => " + page);
// console.log(app);
-
- var pageurl= location.protocol + '://' + location.host + '/apps_dks_lu/hourtrax/' + page + '?' ;
- console.log(app.info);
- pageurl += 'db=' + app.info.appconfig.db[app.info.appconfig.currentdb].id;
+ var da = [];
+ if (data){
+
+ for (var i in data){
+ da.push(i + "=" + data[i]);
+ }
+ }
+ var pageurl= app.url + page + '?' ;
+ //console.log(app.info);
+ pageurl += 'db=' + app.currentdb + ((da.length > 0)?'&' + da.join("&"):'');
-
+ console.log("loadpage: " + pageurl);
$('#appframe').attr('src',pageurl);
//path += '&data=' + encodeURIComponent(JSON.stringify(data.data));
},
getinfo: function(){
- //if (navigator.platform == "Win32"){
- $.ajax({
+ $.ajax({
encoding:"UTF-8",
- url:'http://localhost:6060/app/info' ,
- //crossDomain: true,
+ url: app.api + 'prefs.cgi?get=auth&app=hourtrax' ,
success: function (data){
- //dump(data + "\n");
- //console.log("from service:" + JSON.stringify(data));
app.info=data.result;
},
error: function(data){
},
async:false
});
- //}
},
loadprintpreview: function(){
//alert("TODO: load print preview!");
},
loadsites: function(){
+ $.ajax({
+ encoding:"UTF-8",
+ url: app.api + 'prefs.cgi?get=auth&app=hourtrax' ,
+ success: function (data){
+ console.log(data);
+ if (data.result.db){
+ for (var s in data.result.db){
+ //console.log(s);
+ $("#crechelist").append('<option value="'+data.result.db[s].dbname+'">'+data.result.db[s].name+'</option>');
+ //$("#crechelist").append('<a class="dropdown-item" href="javascript:app.changesite(\''+ data.result.db[s].dbname +'\');">' + data.result.db[s].name +'</a>');
+ }
+ if (app.currentdb == null){
+ app.currentdb = data.result.db[0].dbname;
+ }
+ }
+
+
+ // app.info=data.result;
+ },
+ error: function(data){
+ //alert("Error:" + JSON.stringify(data));
+ console.log("Error:" + JSON.stringify(data));
+ },
+ async:false
+ });
// console.log(app.info);
- for (var s in app.info.appconfig.db){
- $("#crechelist").append('<a class="dropdown-item" href="javascript:app.changesite(\''+ s +'\');">' + app.info.appconfig.db[s].name +'</a>');
- }
+
},
- changesite: function(num){
- app.info.appconfig.currendb = num;
+ changesite: function(){
+ var dbname = $("#crechelist :selected").val();
+ console.log(dbname);
+ //app.info.appconfig.currendb = num;
+ app.currentdb = dbname;
$.ajax({
encoding:"UTF-8",
- url:'http://localhost:6060/app/preferences?page=service&set=' +encodeURIComponent('{"currentdb":'+ num+'}') ,
+ url:app.api + 'prefs.cgi?page=currentdb&set=' + dbname ,
//crossDomain: true,
success: function (data){
//dump(data + "\n");
//console.log("from service:" + JSON.stringify(data));
- app.info.appconfig=data.result;
+ //app.info.appconfig=data.result;
},
error: function(data){
console.log("Error:" + JSON.stringify(data));
},
async:false
- });
- app.loadpage(app.info.appconfig.lastpage);
+ });
+ document.getElementById('appframe').contentWindow.location.reload(true);
+ //app.loadpage(app.info.appconfig.lastpage);
}
}
//app.getinfo();
$(document).ready(function() {
- //app.getinfo();
+ //TODO: get userrights
+ app.getinfo();
app.loadsites();
- if (app.info.appconfig == null){
-// $("#mnubtn_print").prop("disabled",true);
-// $("#mnubtn_dashboard").prop("disabled",true);
-// for (var i in modules){
-// $("#mnubtn_" + i).prop("disabled",true);
-// }
- app.loadpage('modules/info/settings.html');
- } else {
- if (app.info.appconfig.lastpage){
- app.loadpage(app.info.appconfig.lastpage);
- } else {
- app.loadpage('modules/dashboard/home.html');
- }
- }
+// if (app.info.appconfig == null){
+// // $("#mnubtn_print").prop("disabled",true);
+// // $("#mnubtn_dashboard").prop("disabled",true);
+// // for (var i in modules){
+// // $("#mnubtn_" + i).prop("disabled",true);
+// // }
+// app.loadpage('modules/info/settings.html');
+// } else {
+// if (app.info.appconfig.lastpage){
+// app.loadpage(app.info.appconfig.lastpage);
+// } else {
+// app.loadpage('modules/dashboard/home.html');
+// }
+// }
});
$("#appframe").on('load', function(){
console.log($("#appframe").attr("src"));
var src = $("#appframe").attr("src").replace(/\\/g,'/');
- src = src.substring(src.indexOf('/app/') + 5);
+ src = src.substring(src.indexOf('/creorga/') + 5);
src = src.substring(0,src.indexOf('?'));
- console.log(src);
+ console.log(src);
+ console.log(app.api);
$.ajax({
encoding:"UTF-8",
- url:'http://localhost:6060/app/preferences?page=service&set=' +encodeURIComponent('{"lastpage":"'+ src+'"}') ,
+ url:app.api +'prefs.cgi?page=service&set=' +encodeURIComponent('{"lastpage":"'+ src+'"}') ,
//crossDomain: true,
success: function (data){
-
- console.log(data);
- app.info.appconfig=data.result;
+ //console.log("appdata");
+ //console.log(data);
+ //app.info.appconfig=data.result;
},
error: function(data){
--- /dev/null
+var eventMethod = window.addEventListener? "addEventListener": "attachEvent";
+var eventer = window[eventMethod];
+var messageEvent = eventMethod === "attachEvent"? "onmessage": "message";
+eventer(messageEvent, function (e) {
+ // if (e.origin !== 'http://the-trusted-iframe-origin.com') return;
+ if (e.data === "updatecrechelist" || e.message === "updatecrechelist") {
+ //alert('Message from iframe just came!');
+ // app.getinfo();
+ app.loadsites();
+ // console.log(e);
+ }
+});
+
+document.addEventListener("keydown", function(e) {
+ //document.onkeydown = function(e) {
+ // "I" key
+ if (e.ctrlKey && e.shiftKey && e.keyCode == 73) {
+ disabledEvent(e);
+ }
+ // "J" key
+ if (e.ctrlKey && e.shiftKey && e.keyCode == 74) {
+ disabledEvent(e);
+ }
+ // "S" key + macOS
+ if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
+ disabledEvent(e);
+ }
+ // "U" key
+ if (e.ctrlKey && e.keyCode == 85) {
+ disabledEvent(e);
+ }
+ // "F12" key
+ if (event.keyCode == 123) {
+ disabledEvent(e);
+ }
+ }, false);
+ function disabledEvent(e){
+ if (e.stopPropagation){
+ e.stopPropagation();
+ } else if (window.event){
+ window.event.cancelBubble = true;
+ }
+ e.preventDefault();
+ return false;
+ }
+
+ var app = {
+ currentdb: "0",
+ info: null,
+ loadpage: function(page){
+ console.log("load Page => " + page);
+ // console.log(app);
+
+ var pageurl= location.protocol + '://' + location.host + '/apps_dks_lu/hourtrax/' + page + '?' ;
+ console.log(app.info);
+ pageurl += 'db=' + app.info.appconfig.db[app.info.appconfig.currentdb].id;
+
+
+ $('#appframe').attr('src',pageurl);
+ //path += '&data=' + encodeURIComponent(JSON.stringify(data.data));
+ },
+ getinfo: function(){
+ //if (navigator.platform == "Win32"){
+ $.ajax({
+ encoding:"UTF-8",
+ url:'http://localhost:6060/app/info' ,
+ //crossDomain: true,
+ success: function (data){
+ //dump(data + "\n");
+ //console.log("from service:" + JSON.stringify(data));
+ app.info=data.result;
+ },
+ error: function(data){
+ //alert("Error:" + JSON.stringify(data));
+ console.log("Error:" + JSON.stringify(data));
+ },
+ async:false
+ });
+ //}
+
+ },
+ loadprintpreview: function(){
+ var myprinturl = $('#appframe').attr('src');
+ var myprinturl = myprinturl.replace(/\\/g,'/');
+ var src = myprinturl.substring(0,myprinturl.indexOf('?'));
+ var moduledir = src.substring(src.indexOf('app')+3,src.lastIndexOf('/'));
+ var reportfilepath = src.substring(0,src.lastIndexOf('/'));
+
+ var reportfile = 'report_' +src.substring(src.lastIndexOf('/') + 1);
+ var params = myprinturl.substring(myprinturl.indexOf('?')+1)
+ console.log("Current URL: " + myprinturl);
+ console.log("File: " + src);
+ console.log("ModuleDir: " + moduledir);
+ console.log("New File: " + reportfile);
+ console.log("Params: " + params);
+ console.log("Printfile: " + reportfilepath + '/' + reportfile +'?'+ encodeURIComponent(params));
+ //?file='+ encodeURIComponent(reportfilepath + '/' + reportfile +'?'+ params)
+ //let modal = window.open('pdfjs/viewer.html?file=' + encodeURIComponent('../../' +moduledir + '/' + reportfile));
+ let modal = window.open(reportfilepath + '/' + reportfile +'?'+ params);
+ //modal.document.write('<h1>Hello</h1>');
+ //alert("TODO: load print preview!");
+ },
+ loadsites: function(){
+ // console.log(app.info);
+ for (var s in app.info.appconfig.db){
+ $("#crechelist").append('<a class="dropdown-item" href="javascript:app.changesite(\''+ s +'\');">' + app.info.appconfig.db[s].name +'</a>');
+ }
+
+ },
+ changesite: function(num){
+ app.info.appconfig.currendb = num;
+ $.ajax({
+ encoding:"UTF-8",
+ url:'http://localhost:6060/app/preferences?page=service&set=' +encodeURIComponent('{"currentdb":'+ num+'}') ,
+ //crossDomain: true,
+ success: function (data){
+ //dump(data + "\n");
+ //console.log("from service:" + JSON.stringify(data));
+ app.info.appconfig=data.result;
+
+ },
+ error: function(data){
+ //alert("Error:" + JSON.stringify(data));
+ console.log("Error:" + JSON.stringify(data));
+ },
+ async:false
+ });
+ app.loadpage(app.info.appconfig.lastpage);
+ }
+
+
+ }
+ //app.getinfo();
+ $(document).ready(function() {
+ //app.getinfo();
+ app.loadsites();
+ if (app.info.appconfig == null){
+// $("#mnubtn_print").prop("disabled",true);
+// $("#mnubtn_dashboard").prop("disabled",true);
+// for (var i in modules){
+// $("#mnubtn_" + i).prop("disabled",true);
+// }
+ app.loadpage('modules/info/settings.html');
+ } else {
+ if (app.info.appconfig.lastpage){
+ app.loadpage(app.info.appconfig.lastpage);
+ } else {
+ app.loadpage('modules/dashboard/home.html');
+ }
+ }
+
+
+ });
+
+ $("#appframe").on('load', function(){
+ console.log($("#appframe").attr("src"));
+ var src = $("#appframe").attr("src").replace(/\\/g,'/');
+ src = src.substring(src.indexOf('/app/') + 5);
+ src = src.substring(0,src.indexOf('?'));
+ console.log(src);
+ $.ajax({
+ encoding:"UTF-8",
+ url:'http://localhost:6060/app/preferences?page=service&set=' +encodeURIComponent('{"lastpage":"'+ src+'"}') ,
+ //crossDomain: true,
+ success: function (data){
+
+ console.log(data);
+ app.info.appconfig=data.result;
+
+ },
+ error: function(data){
+ //alert("Error:" + JSON.stringify(data));
+ console.log("Error:" + JSON.stringify(data));
+ },
+ async:false
+ });
+ })
+
\ No newline at end of file
var appdb = {
- dbfile: null,
- url: location.protocol + '://' + location.host + '/creorga_lu/api/sqlite.cgi?',
+ dbfile: parent.app.currentdb,
+ url: ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + '/apps_dks_lu/api/sqlite.cgi?',
dbquery: function(sQuery){
var type='querysorted';
- var result= {sqldata:[]};
+ var result= {sqldata:[]};
+ //console.log(sQuery);
//console.log(this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery));
//dump(this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) + "\n");
$.ajax({
- encoding:"UTF-8",
- url:this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) ,
- crossDomain: true,
+ encoding:"UTF-8",
+ method: "POST",
+ url:appdb.url,
+ data: 'db=' + appdb.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery),
+ //crossDomain: true,
success: function (data){
//dump(data + "\n");
result=data.result;
dbqueryarray: function(sQuery){
var type='queryarray';
var result= {sqldata:[]};
- //console.log(this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery));
+ //console.log(appdb.url + 'db=' + appdb.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery));
//alert(this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) + "\n");
$.ajax({
encoding:"UTF-8",
- url:this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) ,
- crossDomain: true,
+ url:appdb.url ,
+ method: "POST",
+ data: 'db=' + appdb.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery),
+ //crossDomain: true,
success: function (data){
- result=data.result;
+
+ result=data.result;
},
error: function(data){
alert("Error:" + JSON.stringify(data));
var type='exec';
var result= {sqldata:[]};
//dump(this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) + "\n");
- console.log(this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) );
+ //console.log(appdb.url + 'db=' + appdb.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) );
$.ajax({
encoding:"UTF-8",
- url:this.url + 'db=' + this.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery) ,
- crossDomain: true,
+ method: "POST",
+ url:appdb.url,
+ data: 'db=' + appdb.dbfile + '&type=' + type + '&sql=' +encodeURIComponent(sQuery),
success: function (data){
result=data.result;
},
-var globalreq = {
- send_request: function(data){
+// var globalreq = {
+// send_request: function(data){
- if (data.page){
- if (data.data){
- console.log(window.location.pathname);
- var page = data.page.substring(data.page.lastIndexOf("/") + 1);
- page = page.replace(/\.html/,'');
- console.log(page);
- $.ajax({
- encoding:"UTF-8",
- url: location.protocol + '://' + location.host + '/creorga_lu/api/prefs.cgi??page=' + page + '&set=' +encodeURIComponent('{"data":' + JSON.stringify(data.data) +'}') ,
- crossDomain: true,
- success: function (data){
- var result=data.result;
- },
- error: function(data){
- alert("Error:" + JSON.stringify(data));
- console.log("Error:" + JSON.stringify(data));
- },
- async:false
- });
- }
+// if (data.page){
+// if (data.data){
+// console.log(window.location.pathname);
+// var page = data.page.substring(data.page.lastIndexOf("/") + 1);
+// page = page.replace(/\.html/,'');
+// console.log(page);
+// $.ajax({
+// encoding:"UTF-8",
+// url: location.protocol + '://' + location.host + '/apps_dks_lu/api/api/prefs.cgi?page=' + page + '&set=' +encodeURIComponent('{"data":' + JSON.stringify(data.data) +'}') ,
+// crossDomain: true,
+// success: function (data){
+// var result=data.result;
+// },
+// error: function(data){
+// alert("Error:" + JSON.stringify(data));
+// console.log("Error:" + JSON.stringify(data));
+// },
+// async:false
+// });
+// }
- var path = location.protocol + '://' + location.host + '/creorga_lu/';
- path = path + data.page + '?';
- path += 'db=' + apppref.curcfg.db;
- window.location = path;
- }
- }
-}
+// var path = location.protocol + '://' + location.host + '/creorga_lu/';
+// path = path + data.page + '?';
+// path += 'db=' + apppref.curcfg.db;
+// window.location = path;
+// }
+// }
+// }
var apppref ={
+ url: ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + '/apps_dks_lu/creorga/',
+ api: ('https' == document.location.protocol ? 'https' : 'http') + '://' + '//' + location.host + '/apps_dks_lu/api/',
curcfg: null,
getSearchParams: function (k){
//alert(location.href);
// appdb.url = "http://localhost:6060/sqlite?";
$("#current_site").html(decodeURI(this.curcfg.sitename));
},
- setpreference:function(section,key,value){
- if (!apppref.curcfg.pageconfig[section]){
- apppref.curcfg.pageconfig[section] = {};
- }
- apppref.curcfg.pageconfig[section][key] = value;
+ setpreference:function(key,value){
+ // if (!apppref.curcfg.pageconfig[section]){
+ // apppref.curcfg.pageconfig[section] = {};
+ // }
+ // apppref.curcfg.pageconfig[section][key] = value;
- var page = location.pathname.substring(location.pathname.lastIndexOf("/"));
- page = page.replace(/\.html/,'');
+
+ //var page = location.pathname.substring(location.pathname.lastIndexOf("/"));
+ //page = page.replace(/\.html/,'');
+
$.ajax({
encoding:"UTF-8",
- url: location.protocol + '://' + location.host + '/creorga_lu/api/prefs.cgi?page=' + page + '&set=' +encodeURIComponent(JSON.stringify(apppref.curcfg.pageconfig)) ,
- crossDomain: true,
+ url: apppref.api + 'prefs.cgi?page=' + key + '&set=' +encodeURIComponent(JSON.stringify(value)) ,
+ //crossDomain: true,
success: function (data){
+
var result=data.result;
},
error: function(data){
});
},
getpreference: function(key){
- apppref.curcfg['pageconfig'] = {};
+ console.log("getpref:" + key);
+ var retdata = null;
$.ajax({
encoding:"UTF-8",
- url: location.protocol + '://' + location.host + '/creorga_lu/api/prefs.cgi?page=' + key ,
- crossDomain: true,
- success: function (data){
- if (data.result){
- apppref.curcfg.pageconfig = data.result;
- }
+ url: apppref.api + 'prefs.cgi?get=' + key ,
+ success: function (data){
+ if (!data.result){
+ retdata = {};
+ }else {
+ retdata = data.result;
+ }
},
error: function(data){
alert("Error:" + JSON.stringify(data));
},
async:false
});
-
+ return retdata;
},
getforeignpreference: function(key){
var ret = null;
$.ajax({
encoding:"UTF-8",
- url: location.protocol + '://' + location.host + '/creorga_lu/api/prefs.cgi?page=' + key ,
+ url: app.api + 'prefs.cgi?get=' + key ,
crossDomain: true,
success: function (data){
if (data.result){
+++ /dev/null
-<!DOCTYPE html>
-
-<html lang="fr">
-<head>
- <meta charset="utf-8">
-
- <title>Employé(e)</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <meta http-equiv="cache-control" content="max-age=0" />
- <meta http-equiv="cache-control" content="no-cache" />
- <meta http-equiv="expires" content="0" />
- <meta http-equiv="expires" content="Tue, 01 Jan 1970 1:00:00 GMT" />
- <meta http-equiv="pragma" content="no-cache" />
- <link href="../../css/bootstrap.min.css" rel="stylesheet" type="text/css">
- <link href="../../vendor/bootstrap-table/bootstrap-table.css" rel="stylesheet" type="text/css">
- <link href="../../css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css">
- <link href="../../css/bootstrap-timepicker.min.css" rel="stylesheet" type="text/css">
- <link href="../../css/glyphicons.css" rel="stylesheet" type="text/css">
- <link href="../../css/jquery.minicolors.css" rel="stylesheet" type="text/css">
- <link href="../../css/creorga.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
-
- <div class="container-fluid">
- <br/>
- <!--<span class="pagehead" id="pagehead">Collaborateur</span> -->
- <input type="hidden" value="" id="staff_uuid">
- <table style="width: 100%;">
- <tbody>
- <tr>
- <td style="width: 50%">
- <form>
- <div class="field form-inline">
- <label for="staff_surname">Nom / Prénom</label>
- <input type="text" value="" id="staff_surname" class="form-control">
- <input type="text" value="" id="staff_prename" class="form-control">
- </div>
-
- <div class="field">
- <label for="staff_address">Adresse</label> <input type="text" value="" id="staff_address" class="form-control">
- </div>
-
- <div class="field form-inline">
- <label for="staff_zip">CP / Ville</label>
- <input type="text" value="" size="5" id="staff_zip" class="form-control">
- <input type="text" value="" id="staff_city" class="form-control">
- </div>
-
- <div class="field">
- <label for="staff_country">Pays</label> <input type="text" value="" id="staff_country" class="form-control">
- </div>
- <div class="field form-inline">
- <label for="staff_phone">Tel / E-Mail</label>
- <input type="text" value="" id="staff_phone" class="form-control">
- <input type="text" value="" id="staff_email" class="form-control">
- </div>
- </form>
-
- </td>
-
- <td style="width: 50%;">
- <form>
- <div class="field form-inline" id="date-container">
- <label for="staff_entrydate" style="width: 200px;">Date d'entrée / de sortie</label>
- <div id="dt_staff_entrydate" class="input-group date">
- <input type="date" class="form-control" value="" limits="0" placeholder="dd.mm.yyyy" id="staff_entrydate" readonly="1"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
-
- <div id="dt_staff_exitdate" class="input-group date">
- <input type="date" class="form-control" value="" limits="0" placeholder="dd.mm.yyyy" id="staff_exitdate" readonly="1"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
-
- <div class="field">
- <label for="staff_jobtitle">Position / Contrat</label> <input type="text" value="" id="staff_jobtitle" readonly="1" class="form-control">
- </div>
- <table style="width: 100%;">
- <tr><td style="width: 50%;"><div class="field">
- <label for="staff_weekhours">heures/semaine</label>
- <div class="input-group number">
- <input type="number" value="" id="staff_weekhours" style="text-align: right;" class="form-control" readonly="1">
-
- <div class="input-group-addon">h</div>
- </div>
- </div></td><td style="width:50%"><div class="field" >
- <label for="staff_color">Couleur</label>
- <div class="input-group">
- <input type="text" id="staff_color" class="form-control" value="" readonly="1">
- </div>
- </div></td></tr>
- </table>
- <div class="field">
- <label for="staff_iban">Compte Bancaire</label> <input type="text" value="" id="staff_iban" class="form-control">
- </div>
- <div class="field" id="pwddata">
- <label for="staff_password">Mot de Passe</label>
- <div class="input-group">
- <input type="password" value="" id="staff_password" class="form-control">
- <div class="input-group-addon">(Min: 4 charatères)</div>
- </div>
- </div>
-
- </form>
-
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="tabbable">
- <ul class="nav nav-tabs" id="tabgrouphead">
- <li><a data-toggle="tab" href="#activity">Organisation interne</a></li>
- <li><a data-toggle="tab" href="#vacancy">Congé</a></li>
- </ul>
-
- <div class="tab-content">
-
- <div id="activity" class="tab-pane">
- <div class="form-group form-inline">
- <label for="year_organisation">Année:</label>
- <div class="input-group">
- <select id="year_organisation" class="selyear">
-
- </select>
- </div>
-
- </div>
- <table id="tbl_activity" class="table table-striped table-bordered">
- <thead></thead>
- <tfoot></tfoot>
- <tbody></tbody>
- </table>
- </div>
- <div id="vacancy" class="tab-pane">
- <div class="form-group form-inline" id="mnuvac">
- <label for="year_vacancy">Année:</label>
- <div class="input-group">
- <select id="year_vacancy" class="selyear">
-
- </select>
- </div>
- <button onclick="dlg_vacancy({'uuid':''},'ins');" class="btn btn-primary" type="button"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> demande de Congé</button>
- <div class="form-group">
- <label for="vacancy_total">congé normale</label>
-
- <div class="input-group" style="width: 120px;">
- <input type="text" id="vacancyyeartotal" class="form-control" value="" readonly="1">
- <span class="input-group-addon">h</span>
- </div>
-
- </div>
- <div class="form-group">
- <label for="vacancylastyearrest">congé à récupérer</label>
-
- <div class="input-group" style="width: 120px;">
- <input type="text" id="vacancylastyearrest" class="form-control" value="0" readonly="1">
- <span class="input-group-addon">h</span>
- </div>
-
- </div>
-
- </div>
- <table id="tbl_vacancy" class="table table-striped table-bordered" data-toggle="table" data-heigth="10vh" style="width: 100%;" >
- <thead>
- <tr>
- <th class="noprint" style="width: 120px;"></th>
- <th style="width: 80px;">année</th>
- <th style="width: 100px;">début</th>
- <th style="width: 100px;">fin</th>
- <th style="width: 60px;">jours</th>
- <th style="width: 60px;">h/j</th>
- <th style="width: 250px;">Description</th>
- <th style="width: 100px;">type</th>
- <th style="width: 60px;" colspan="2">normal</th>
- <th style="width: 60px;" colspan="2">except.</th>
- <th style="width: 60px;" colspan="2">maladie</th>
- </tr>
- </thead>
- <tbody></tbody>
- <tfoot></tfoot>
- </table>
-
- <div id="vacancystatus" style=" white-space: nowrap; width: 100%; text-align: center;"></div>
-
- </div>
- </div>
- </div>
-
- <div class="modal fade" id="edit_vacancy">
- <div class="modal-dialog" style="width: 800px; max-width: 800px;">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
- <h4 class="modal-title">Editer Congé</h4>
- </div>
- <div class="modal-body" style="height: 410px; max-height: 410px; ">
-<div id="frmeditvacancy">
- <input type="hidden" value="0" id="uuid" />
- <input type="hidden" value="" id="staffuuid" />
-
-
- <div class="form-inline row">
- <label for="dailyduration" class="col-md-3">Journée</label>
- <select value="" id="dailyduration" class="form-control" onchange="setdailydurationfields();">
- <option value="1.0">Journée(s) complet(s)</option>
- <option value="0.4">demi(s) Journée(s)</option>
- <option value="0.">quelques heures</option>
- </select>
- </div>
-
- <div class="row form-inline">
- <label class="col-md-3">Date début</label>
- <div id="dt_vacdatefrom" class="input-group date">
- <input type="date" class="form-control" value="" limits="1" placeholder="dd.mm.yyyy" id="vacdatefrom"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
- <div class="row form-inline">
- <label class="col-md-3">Date fin</label>
- <div id="dt_vacdateto" class="input-group date">
- <input type="date" class="form-control" value="" limits="1" placeholder="dd.mm.yyyy" id="vacdateto"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
-
- <div id="ftimefrom" class="row form-inline">
-
- <label class="col-md-3">heure début</label>
- <div class="input-group bootstrap-timepicker time">
- <input type="text" class="form-control timepicker" placeholder="" value="" id="timefrom">
- </div>
- </div>
- <div class="form-inline row" id="fhours">
- <label for="description" class="col-md-3">nbr. d'heures</label>
- <input type="text" value="" id="hours" nullable="true" class="form-control col-md-6" style="width: 20%;">
-
- </div>
- <div class="form-inline row">
- <label for="type" class="col-md-3">Type de congé</label>
- <select id="type" value="">
- <option value="0">Congé normal</option>
- <option value="1">Congé expetionelle</option>
- <option value="-1">Congé de maladie</option>
- </select>
- </div>
- <div class="form-inline row">
- <label for="description" class="col-md-3">Description</label>
- <input type="text" value="" id="description" nullable="true" class="form-control col-md-6" style="width: 70%;">
-
- </div>
- <div class="row" style="height: 120px;"></div>
- </div>
- </div>
- <div class="modal-footer">
-
- <button aria-hidden="true" data-dismiss="modal" class="btn">Annuler</button>
- <button onclick="save_vacancy();" class="btn btn-primary">Envoyer la demande</button>
- </div>
- </div>
- </div>
- </div>
- <div class="modal fade" id="confirm_delete_vacancy">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
-
- <h4 class="modal-title">Supprimer Congé</h4>
- </div><!-- dialog contents -->
-
- <div class="modal-body">
- Êtes vous sûre de supprimer ce congé?<br>
-
- </div><!-- dialog buttons -->
-
- <div class="modal-footer">
- <button aria-hidden="true" data-dismiss="modal" class="btn">Non</button> <button onclick="delete_vacancy();" class="btn btn-primary">Oui</button>
- </div>
- </div>
- </div>
-
-
- </div>
- <script src="../../js/jquery.min.js" type="text/javascript"></script>
- <script src="../../js/bootstrap.min.js" type="text/javascript"></script>
- <script src="../../vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
- <script src="../../vendor/bootstrap-table/locale/bootstrap-table-fr-FR.js" type="text/javascript"></script>
- <script src="../../js/moment-with-locales.js" type="text/javascript"></script>
- <script src="../../js/bootstrap-datetimepicker.min.js" type="text/javascript"></script>
- <!-- <script src="../../js/bootstrap-timepicker.min.js" type="text/javascript"></script> -->
- <script src="../../js/bootstrap-multiselect.js" type="text/javascript"></script>
- <script src="../calendar/js/rrule.js" type="text/javascript"></script>
- <script src="../calendar/js/nlp.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/encrypt.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/navigation.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/preferences.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/database.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/system.js" type="text/javascript"></script>
- <script src="../../js/creorga.js" type="text/javascript"></script>
- <script src="../../js/labels.js" type="text/javascript"></script>
- <script src="js/coworker_basic.js" type="text/javascript"></script>
-</body>
-</html>
function initdata() {
loadtable();
- set_infoheader("");
+ set_infoheader("");
+ pconfig = apppref.getpreference("staff");
if (!pconfig.printlayout) {
pconfig.printlayout = 'list';
- apppref.setpreference("pageconfig.staff", pconfig);
+ apppref.setpreference("staff", pconfig);
}
}
function loadtable() {
- var sql = "SELECT '<button type=\"button\" class=\"btn btn-primary\" onclick=\"load_coworker(''' || uuid || ''')\" title=\"editer\"><span class=\"glyphicon glyphicon-pencil\"></span></button> <button type=\"button\" class=\"btn btn-danger\" onclick=\"confirm_delete_coworker(''' || uuid || ''');\" title=\"supprimer\"><span class=\"glyphicon glyphicon-remove\"></span></button> ' as action, coalesce(prename,'') || '<br/>' || coalesce(surname,'') as name,case when color is not null then '<div style=\"width: 50px; height: 30px;background-color: ' || color ||';\"></div>' else null end color, coalesce(address,'')|| '<br/>' || coalesce(zip,'') || ' ' || coalesce(city,'') || '<br/>' || coalesce(country,'') as address, case when phone is not null then '<span class=\"glyphicon glyphicon-earphone\" aria-hidden=\"true\"></span>: ' || phone || '<br/>' else '' end || case when email is not null then '<span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>:' || email else '' end as phonemail, coalesce(jobtitle,'') || '<br/>' || case when entrydate is not null then 'Ã partir du: ' || strftime('%d.%m.%Y',entrydate) else '' end || case when exitdate is not null then ' jusqu''au: ' || strftime('%d.%m.%Y',exitdate) else '' end as jobtitle FROM staff;";
+ var sql = "SELECT '<button type=\"button\" class=\"btn btn-primary\" onclick=\"parent.app.loadpage(''modules/staff/coworker.html'',{uuid:''' || uuid || '''});\" title=\"editer\"><span class=\"glyphicon glyphicon-pencil\"></span></button> <button type=\"button\" class=\"btn btn-danger\" onclick=\"confirm_delete_coworker(''' || uuid || ''');\" title=\"supprimer\"><span class=\"glyphicon glyphicon-remove\"></span></button> ' as action, coalesce(prename,'') || '<br/>' || coalesce(surname,'') as name,case when color is not null then '<div style=\"width: 50px; height: 30px;background-color: ' || color ||';\"></div>' else null end color, coalesce(address,'')|| '<br/>' || coalesce(zip,'') || ' ' || coalesce(city,'') || '<br/>' || coalesce(country,'') as address, case when phone is not null then '<span class=\"glyphicon glyphicon-earphone\" aria-hidden=\"true\"></span>: ' || phone || '<br/>' else '' end || case when email is not null then '<span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>:' || email else '' end as phonemail, coalesce(jobtitle,'') || '<br/>' || case when entrydate is not null then 'Ã partir du: ' || strftime('%d.%m.%Y',entrydate) else '' end || case when exitdate is not null then ' jusqu''au: ' || strftime('%d.%m.%Y',exitdate) else '' end as jobtitle FROM staff;";
//dump("STAFFSQL:" +sql + "\n");
var data = appdb.dbqueryarray(sql);
function add_coworker() {
var newuuid = appdb.generate_uuid();
appdb.dbexec("insert into staff (uuid) VALUES ('" + newuuid + "');");
+ parent.app.loadpage('modules/staff/coworker.html',{uuid:newuuid});
- globelreq.send_request({
- page: 'coworker',
- module: 'staff',
- data: {
- "uuid": newuuid
- },
- header: 'Employé(e)'
- });
}
function confirm_delete_coworker(myuuid) {
- //alert('TEST');
+
delcoworker = myuuid;
$("#confirm_delete_coworker").modal('show');
return false;
+++ /dev/null
-<!DOCTYPE html>
-
-<html lang="fr">
-<head>
- <meta charset="utf-8">
-
- <title>Creorga - Staff Basic</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <meta http-equiv="cache-control" content="max-age=0" />
- <meta http-equiv="cache-control" content="no-cache" />
- <meta http-equiv="expires" content="0" />
- <meta http-equiv="expires" content="Tue, 01 Jan 1970 1:00:00 GMT" />
- <meta http-equiv="pragma" content="no-cache" />
- <link href="../../css/bootstrap.min.css" rel="stylesheet" type="text/css">
- <!--<link href="../../css/bootstrap-theme.min.css" rel="stylesheet" type="text/css">-->
- <link href="../../css/datatables.min.css" rel="stylesheet" type="text/css">
- <link href="../../css/dataTables.bootstrap.min.css" rel="stylesheet" type="text/css">
- <link href="../../css/glyphicons.css" rel="stylesheet" type="text/css">
- <link href="../../css/style.css" rel="stylesheet" type="text/css">
- <link href="../../css/creorga.css" rel="stylesheet" type="text/css"><!-- Fav and touch icons -->
-
- <link rel="shortcut icon" href="img/favicon.png">
-</head>
-
-<body>
- <div class="container-fluid" style="padding-top: 5px;">
- <div style="margin-top: -30px;z-index: -10; display: none" id="stafflist">
- <table id="tbl_staff" class="table table-striped">
- </table>
- </div>
- <div class="container col-xs-12 col-sm-offset-2 col-sm-8 col-md-offset-3 col-md-6 col-lg-offset-4 col-lg-4" id="stafflogin">
- <br />
- <div class="panel panel-default">
- <div class="panel-heading">
- <h1>Login</h1>
- </div>
- <div class="panel-body">
- <div class="form-group">
- <div class="input-group">
- <span class="input-group-addon">
- <span class="glyphicon glyphicon-user"></span>
- </span>
- <select id="sel_staff" onchange="onselstaff(this.id);" style="width: 100%">
-
- </select>
-
- </div>
- </div>
- <div class="form-group">
- <div class="input-group">
- <span class="input-group-addon">
- <span class="glyphicon glyphicon-lock"></span>
- </span>
- <input id="txtpasswd" type="password" class="form-control" />
- </div>
- </div>
- <button id="btnLogin" class="btn btn-primary" style="width: 100%" onclick="load_coworker_basic();">
- <span class="glyphicon glyphicon-log-in"></span> Entrez
- </button>
- </div>
- </div>
- </div>
- </div>
-
- <script src="../../js/jquery.min.js" type="text/javascript"></script>
- <script src="../../js/bootstrap.min.js" type="text/javascript"></script>
- <script src="../../js/datatables.min.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/encrypt.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/navigation.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/preferences.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/database.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/system.js" type="text/javascript"></script>
- <script src="../../js/creorga.js" type="text/javascript"></script>
- <script src="../../js/labels.js" type="text/javascript"></script>
- <script src="js/staff_basic.js" type="text/javascript"></script>
-</body>
-</html>
<head>
<meta charset="utf-8">
- <title>Creorga - Staff</title>
+ <title>StaffList</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<link href="../../css/style.css" rel="stylesheet" type="text/css">
<link href="../../css/creorga.css" rel="stylesheet" type="text/css"><!-- Fav and touch icons -->
- <link rel="shortcut icon" href="img/favicon.png">
+
</head>
<body>
- <div class="container-fluid" style="padding-top: 5px;">
+ <<nav class="navbar navbar-inverse navbar-fixed-top">
+
+ <div class="">
+ <ul class="nav navbar-nav navbar-left">
+ <li style="padding-top: 7px; padding-left: 10px; color: #fff;font-size: 24px;">Employé(e)s</li>
+ <li style="padding-top: 7px; padding-left: 10px;"><div class="btn-group" role="group" aria-label="topbar" ">
+ <button onclick="add_coworker();" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
+
+
+ </div>
+ <span class="pagehead" id="pagehead" style="color: #fff"></span></li>
+ </ul>
+ </div>
+
+ </nav>
+ <div class="container-fluid" style="padding-top: 55px;">
<!--<span class="pagehead" id="pagehead">Personnel</span> -->
<div class="btn-group" style="z-index: 10;">
- <button onclick="add_coworker();" class="btn btn-primary" type="button" >
- <span class="glyphicon glyphicon-plus"></span>
-</button>
+
</div>
<div style="margin-top: -30px;z-index: -10;">
<table id="tbl_staff" class="table table-striped">
<script src="../../js/jquery.min.js" type="text/javascript"></script>
<script src="../../js/bootstrap.min.js" type="text/javascript"></script>
<script src="../../js/datatables.min.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/navigation.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/preferences.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/database.js" type="text/javascript"></script>
- <script src="chrome://creorga/content/js/system.js" type="text/javascript"></script>
+ <script src="../../js/webpreferences.js" type="text/javascript"></script>
+ <script src="../../js/webdatabase.js" type="text/javascript"></script>
<script src="../../js/creorga.js" type="text/javascript"></script>
<script src="../../js/labels.js" type="text/javascript"></script>
<script src="js/staff.js" type="text/javascript"></script>
{
- "db": [
+ "creorga":{"db":[
{
"name":"Creche Un der Atert","dbname":"underatert"
},
}
],
"modules":{"childs":{"delete":true}}
+ },
+ "hourtrax":{"db":[{"name":"Un der Atert","dbname":"hrunderatert"}]}
}
\ No newline at end of file
--- /dev/null
+{"printlayout":"list","order":[[0,"asc"]]}
\ No newline at end of file
-{"lastpage":""}
\ No newline at end of file
+{"lastpage":"://localhost/apps_dks_lu/apps/hourtrax/modules/staff/coworker.html"}
\ No newline at end of file
--- /dev/null
+{"printlayout":"list"}
\ No newline at end of file