v20200214 master
authorKilian Saffran <ksaffran@dks.lu>
Fri, 14 Feb 2020 15:44:25 +0000 (16:44 +0100)
committerKilian Saffran <ksaffran@dks.lu>
Fri, 14 Feb 2020 15:44:25 +0000 (16:44 +0100)
17 files changed:
CGI/index.cgi
CGI/tmpl/app/hourtrax/appbutton.tt [new file with mode: 0644]
CGI/tmpl/app/hourtrax/index.tt [new file with mode: 0644]
CGI/tmpl/app/invoicejournal/index.tt
CGI/tmpl/app/invoicejournal/module/accounts/accounts.js
CGI/tmpl/app/invoicejournal/module/accounts/index.js
CGI/tmpl/app/invoicejournal/module/accounts/index.tt
CGI/tmpl/app/invoicejournal/module/invoicejournal/index.tt
CGI/tmpl/app/invoicejournal/module/invoicejournal/invoice.js
CGI/tmpl/app/invoicejournal/module/sales/bookings.js [new file with mode: 0644]
CGI/tmpl/app/invoicejournal/module/sales/index.js
CGI/tmpl/app/invoicejournal/module/sales/index.tt
CGI/tmpl/app/rpinas/appbutton.tt [new file with mode: 0644]
CGI/tmpl/app/rpinas/index.tt [new file with mode: 0644]
CGI/tmpl/skeleton/module.tt
dksnas.pl
htdocs/img/package.svg [new file with mode: 0644]

index 29e92d9..6108560 100755 (executable)
@@ -12,7 +12,7 @@ use File::Basename qw/dirname basename/;
 use Template;
 # use Template::Constants qw( :debug );
 use CGI;
-#use CGI::Carp qw(fatalsToBrowser);
+use CGI::Carp qw(fatalsToBrowser);
 use CGI::Cookie;
 use Data::Dumper;
 use JSON::PP;
diff --git a/CGI/tmpl/app/hourtrax/appbutton.tt b/CGI/tmpl/app/hourtrax/appbutton.tt
new file mode 100644 (file)
index 0000000..266dd03
--- /dev/null
@@ -0,0 +1 @@
+<img src="[% abspath %][% staticpath %]img/package.svg" style="width: 64px;"><br/>HourTrax
\ No newline at end of file
diff --git a/CGI/tmpl/app/hourtrax/index.tt b/CGI/tmpl/app/hourtrax/index.tt
new file mode 100644 (file)
index 0000000..d15d27e
--- /dev/null
@@ -0,0 +1,89 @@
+<!doctype html>\r
+<html lang="en">\r
+  <head>\r
+    <meta charset="utf-8">\r
+    <meta name="viewport" content="width=device-width, initial-scale=1">\r
+    <meta name="description" content="">\r
+    <meta name="author" content="">\r
+    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />\r
+  <meta http-equiv="Pragma" content="no-cache" />\r
+  <meta http-equiv="Expires" content="0" />\r
+    <!--<link rel="icon" href="../img/favicon/creorga.png">-->\r
+\r
+    <title>Creorga </title>\r
+\r
+    <link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">\r
+       <link href="../css/main.css" rel="stylesheet">\r
+  </head>\r
+\r
+  <body oncontextmenu="return false;">\r
+\r
+    <nav class="navbar navbar-dark bg-dark fixed-top justify-content-between flex-nowrap flex-row">\r
+\r
+      <div class="mr-auto">\r
+      <div class="btn-group" role="group" aria-label="Main">\r
+      <button class="btn btn-default" id="mnubtn_childs" onclick="app.loadpage('modules/childs/index.html');"><img src="../img/modules/Children.svg" style="width: 32px; height: 32px;"/><br/>Enfants</button>\r
+      <div class="btn-group" role="group">\r
+    <button  type="button" id="mnubtn_presences" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\r
+      <img src="../img/modules/Check.svg" style="width: 32px; height: 32px;"/><br/>Présences\r
+    </button>\r
+    <div class="dropdown-menu" aria-labelledby="mnubtn_presences">\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/presences/dailypresences.html');">Présences par jour</a>\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/presences/weeklypresences.html');">Présences par Semaine</a>\r
+    </div>\r
+  </div>\r
+  <div class="btn-group" role="group">\r
+    <button  type="button" id="mnubtn_calendar" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\r
+      <img src="../img/modules/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendriers\r
+    </button>\r
+    <div class="dropdown-menu" aria-labelledby="mnubtn_calendar">\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/index.html');">Calendrier des Enfants</a>\r
+      [% IF creorga.modules.staff.planning %]\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calorganisation.html');">Calendrier du Staff</a>\r
+      [% END %]\r
+      [% IF creorga.modules.staff.vacancy %]\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calvacancy.html');">Calendrier des Congés</a>\r
+      [% END %]\r
+    </div>\r
+  </div>\r
+\r
+      [% IF creorga.modules.staff.menu %]\r
+      <button class="btn btn-default"  id="mnubtn_stafflist" onclick="app.loadpage('modules/staff/stafflist.html');" ><img src="../img/modules/Team.svg" style="width: 32px; height: 32px; "/><br/>Employé(e)s</button>\r
+      [% END %]\r
+      </div>\r
+      </div>\r
+\r
+      <div class="ml-auto">\r
+      <div class="btn-group" role="group" aria-label="Right">\r
+      <div class="btn-group">\r
+      [% IF creorga.modules.creche.menu %]\r
+  <button type="button" class="btn btn-default" id="mnubtn_creche" onclick="app.loadpage('modules/creche/creche.html');"><img src="../img/modules/Home.svg" style="width: 32px; height: 32px;"/><br/>Crèche</button>\r
+  [% END %]\r
+  <select id="crechelist" class="btn btn-default" class="form-control" onchange="app.changesite();">\r
+\r
+  </select>\r
+  \r
+</div>\r
+      </div>\r
+      \r
+      </div>\r
+\r
+      \r
+    </nav>\r
+\r
+    <main role="main" class="container-fluid">\r
+\r
+      <iframe src="modules/childs/index.html" id="appframe" style="width: 100%; height: calc(100vh - 90px); margin: 0px; padding: 0px;"></iframe>\r
+\r
+    </main>\r
+\r
+\r
+    <script src="../vendor/jquery/jquery.min.js"></script>\r
+    <script src="../vendor/bootstrap/js/bootstrap.bundle.min.js"></script>\r
+    <script src="../js/app.js"></script>\r
+    <script src="../js/webpreferences.js" type="text/javascript"></script>\r
+    <script src="../js/webdatabase.js" type="text/javascript"></script>\r
+    \r
+\r
+  </body>\r
+</html>\r
index d33ccdf..d3ad840 100644 (file)
@@ -32,7 +32,7 @@
             <a class="w3-bar-item w3-button w3-padding w3-border-bottom" href="javascript:admin.loadpage('module/invoicejournal/index.html','Journal');">Journal</a>
             <a class="w3-bar-item w3-button w3-padding w3-border-bottom" href="javascript:admin.loadpage('module/sales/index.html','Verkäufe');">Buchungen</a>
             <!-- <a href="javascript:admin.loadpage('module/invoices/index.html','Rechnungs-Erstellung');" class="w3-bar-item w3-button">Rechnungs-Erstellung</a> -->
-            <a class="w3-bar-item w3-button w3-padding w3-border-bottom" href="javascript:admin.loadpage('module/accounts/index.html','Adressen');"><i class="icon-Adress_book_02"></i> Addressen</a>
+            <a class="w3-bar-item w3-button w3-padding w3-border-bottom" href="javascript:admin.loadpage('module/accounts/index.html','Adressen');">Addressen</a>
             <a class="w3-bar-item w3-button w3-padding w3-border-bottom" href="javascript:admin.loadpage('module/bankaccount/index.html','Bankkonto');">Bankkonto</a>
             <!-- <a href="javascript:admin.loadpage('module/documents/index.html','Dokumente');" class="w3-bar-item w3-button">Dokumente</a> -->
             <a class="w3-bar-item w3-button w3-padding w3-border-bottom" href="javascript:admin.loadpage('module/offers/index.html','Angebote');">Angebote</a>
index c983eed..8bbf8eb 100644 (file)
@@ -7,28 +7,32 @@ var accounts ={
   inittable: function(){
     accounts.tbl = new Tabulator("#tbl_" + accounts.name, {
       headerFilterPlaceholder:"filter...",
-      height: "100vh",
+      height: "92vh",
       layout:"fitDataFill",
       selectable:1,
-      responsiveLayout:"collapse",
       columns:[
       {title:"K.Nr", field:"ident",headerFilter:"input"},
-      {title:"Name", field:"company",headerFilter:"input"},
+      {title:"Name", field:"receipient",headerFilter:"input"},
       {title:"E-Mail", field:"email",headerFilter:"input"},
       {title:"Tel", field:"phone",headerFilter:"input"},
-      {title:"Addresse", field:"address",headerFilter:"input"},
+      {title:"Addresse", field:"address",formatter:"textarea",headerFilter:"input"},
+      {title:"Typ", field:"types",formatter:"textarea",headerFilter:"input"},
       ],
   });
     accounts.gettbldata();
   },
   gettbldata: function(){
-    req.reqdata("POST","db.cgi",{"db":mpref.cfg.db,"type":"array","sql":"SELECT id, company, prename,surname, address, zip, city, country, email, phone, mobile, ident FROM accounts;"},accounts.loadtbldata);
+    req.reqdata("POST","db.cgi",{"db":parent.app + "/" + mpref.cfg.db,"get":"accountslist",},accounts.loadtbldata);
   },
   loadtbldata: function(data){
     if (data && data.sqldata){
       accounts.tbl.setData(data.sqldata);
     }
   },
+  viewtable: function(){
+    accounts.gettbldata();
+    module.viewpanel('tbl_accounts');
+  },
   add: function(){
     
   },
index f70412f..b6f9ec4 100644 (file)
@@ -1,21 +1,12 @@
 
-var tbl = null;
-function initpage(){
+function initpage() {
+  console.log(mpref.cfg);
+  console.log("APP:" + parent.app);
   mpref.loadconfig();
-  console.log(mpref);
-  loadtable();
+  accounts.inittable();
+  return false;
 }
 
-function loadtable(){
-  
-}
-
-function gettbldata(){
-  
-}
 
-function filltbldata(data){
-  
-}
 
 
index 001ff9c..2950ea5 100644 (file)
@@ -1,6 +1,20 @@
-
-    <div class="w3-display-container">
-    <!-- PAGE DATA START-->
-    <div id="tbl_Accounts"></div>
-    <!-- PAGE DATA END -->
+[% PROCESS macro/fields.tt %]
+<div class="w3-top w3-border-bottom w3-light-grey">
+    <div class="w3-bar">
+        <div class="toolbar" id="tbar_tbl_accounts">
+            <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="accounts.viewtable();"> Accounts</button>
+            
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="accounts.remove();"><img src="[% abspath%][% staticpath %]img/icons/remove.svg" style="height: 20px;"></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="accounts.edit();"><img src="[% abspath%][% staticpath %]img/icons/edit.svg" style="height: 20px;"></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="accounts.add();"><img src="[% abspath%][% staticpath %]img/icons/plus.svg" style="height: 20px;"></button>
+        </div>
+        
     </div>
+</div>
+<div class="w3-display-container panel" id="pnl_tbl_accounts" style="margin-top: 36px;">
+    <div id="tbl_accounts"></div>
+</div>
+[% INCLUDE "block/dlgdataload.tt" %]
+[% INCLUDE "block/dlgdeleterow.tt" %]
+[% INCLUDE "block/dlgmessage.tt" %]
+<script src="accounts.js"></script>
index 05789de..eda149b 100644 (file)
@@ -4,15 +4,15 @@
         <div class="toolbar" id="tbar_tbl_invoices">
             <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="invoices.viewtable();"> Journal</button>
             
-            <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="invoices.remove();"><i class=" icon-Delete"></i></button>
-            <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="invoices.edit();"><i class=" icon-Edit"></i></button>
-            <button class="w3-bar-item w3-button w3-border w3-right w3-blue-gre" onclick="invoices.add();"><i class=" icon-Add"></i></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="invoices.remove();"><img src="[% abspath%][% staticpath %]img/icons/remove.svg" style="height: 20px;"></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="invoices.edit();"><img src="[% abspath%][% staticpath %]img/icons/edit.svg" style="height: 20px;"></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="invoices.add();"><img src="[% abspath%][% staticpath %]img/icons/plus.svg" style="height: 20px;"></button>
         </div>
         <div class="toolbar" id="tbar_frm_invoices" style="display: none;">
-            <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="invoices.viewtable();"> back</button>
-            
-            <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="invoices.genpdf();"><i class="icon-Printer"></i></button>
-            <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="invoices.save();"><i class=" icon-Save"></i></button>
+            <button class="w3-bar-item w3-button w3-border" onclick="invoices.viewtable();"> back</button>
+            <div class="w3-bar-item" style="padding-bottom: 0px;"><span style="font-weight: bold; font-size: 13pt;">Rechnung</span></div>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="invoices.genpdf();"><img src="[% abspath%][% staticpath %]img/icons/Adobe_Acrobat.svg" style="height: 20px;"></button></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="invoices.save();"><img src="[% abspath%][% staticpath %]img/icons/save.svg" style="height: 20px;"></button>
         </div>
     </div>
 </div>
@@ -20,9 +20,7 @@
     <div id="tbl_invoices"></div>
 </div>
 <div class="w3-display-container panel" id="pnl_frm_invoices" style="display: none; margin-top: 36px;">
-    
-
-    <div class="w3-container" >
+    <div class="w3-container w3-padding" >
         <form id="frm_invoices">
         <div class="w3-container w3-threequarter">
         [% fieldhidden('id','invoices','ident') %]
             [% fieldselectbox('id_sender','invoices','Sender','w3-third','') %] 
             [% fieldeditbox('reference','invoices','Referenz','w3-third','') %]
         </div>
-        <div class="w3-cell-row">
+        
              
             
-        </div>
+        <div id="invoicenotes">
         <div class="w3-cell-row">
             [% fieldrichtextarea('headernote','invoices','Vorwort','','','100px','') %]
         </div>
@@ -49,6 +47,7 @@
             [% fieldrichtextarea('footernote','invoices','Nachwort','','','100px','') %]
         </div>
         </div>
+        </div>
         <div class="w3-container w3-quarter">
         <div class="w3-container">
             [% fieldmoneybox('netamount','invoices','Netto','w3-half','readonly') %]
         </div>
         </form>
     </div>
-    <div class="w3-bar">
-        <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="bookings.remove();" ><i class=" icon-Delete"></i></button>
-        <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="bookings.edit();" ><i class=" icon-Edit"></i></button>
-        <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="bookings.add();" ><i class=" icon-Add"></i></button>
+    <div class="w3-bar w3-border-top w3-border-bottom">
+    <div class="w3-bar-item" style="padding-bottom: 0px;"><span style="font-weight: bold; font-size: 11pt;">Produkte / Dienstleistungen</span></div>
+        <button class="w3-bar-item w3-button w3-border w3-right" onclick="bookings.remove();" ><img src="[% abspath%][% staticpath %]img/icons/remove.svg" style="height: 20px;"></button>
+        <button class="w3-bar-item w3-button w3-border w3-right" onclick="bookings.edit();" ><img src="[% abspath%][% staticpath %]img/icons/edit.svg" style="height: 20px;"></button>
+        <button class="w3-bar-item w3-button w3-border w3-right" onclick="bookings.add();" ><img src="[% abspath%][% staticpath %]img/icons/plus.svg" style="height: 20px;"></button>
     </div>
     <div id="tbl_bookings"></div>
     
index 3475acf..e3f111f 100644 (file)
@@ -268,8 +268,10 @@ var invoices = {
       fillformbydataclass("invoices", data.sqldata[0],invoices.choices, false);
       //console.log(data.sqldata[0].invoicetype);
       invoices.current = data.sqldata[0];
-      if (data.sqldata[0].invoicetype == "inv-out") {
-          //document.getElementById("netamount").readonly = true;
+      if (data.sqldata[0].invoicetype == "inv-in") {
+        document.getElementById("invoicenotes").style.display = 'none';
+      } else {
+        document.getElementById("invoicenotes").style.display = 'block';
       }
       bookings.gettbldata();
   }
diff --git a/CGI/tmpl/app/invoicejournal/module/sales/bookings.js b/CGI/tmpl/app/invoicejournal/module/sales/bookings.js
new file mode 100644 (file)
index 0000000..aa35f3f
--- /dev/null
@@ -0,0 +1,52 @@
+var bookings ={
+  tbl: null,
+  name: "bookings",
+  initform: function(){
+
+  },
+  inittable: function(){
+    bookings.tbl = new Tabulator("#tbl_" + bookings.name, {
+      headerFilterPlaceholder:"filter...",
+      height: "92vh",
+      layout:"fitDataFill",
+      selectable:1,
+      columns:[
+      
+        {title:"Datum", field:"bookingdate",headerFilter:"input"},
+        {title:"Anz.", field:"quantity",align:"right",headerFilter:"input"},
+        {title:"Einh.", field:"unit",align:"right",headerFilter:"input"},
+        {title:"Einheits<br/>Betrag", field:"unitamount",align:"right",headerFilter:"input"},
+        {title:"Beschreibung", field:"description",headerFilter:"input"},
+        {title:"Mwst.", field:"taxamount",align:"right"},
+        {title:"Netto", field:"netamount",align:"right"},
+        //{title:"", field:"taxpercent",align:"right",headerFilter:"input"},
+        {title:"Status", field:"status",headerFilter:"input"},
+        {title:"Empfänger", field:"receipient",headerFilter:"input"},
+        {title:"Rechnungs<br/>Status", field:"invoicestatus",headerFilter:"input"},
+        {title:"Product-Typ", field:"product_type",headerFilter:"input"}
+      ],
+  });
+    bookings.gettbldata();
+  },
+  gettbldata: function(){
+    req.reqdata("POST","db.cgi",{"db":parent.app + "/" + mpref.cfg.db,"get":"bookingslist",},bookings.loadtbldata);
+  },
+  loadtbldata: function(data){
+    if (data && data.sqldata){
+      bookings.tbl.setData(data.sqldata);
+    }
+  },
+  viewtable: function(){
+    bookings.gettbldata();
+    module.viewpanel('tbl_bookings');
+  },
+  add: function(){
+    
+  },
+  edit: function(){
+
+  },
+  remove: function(){
+
+  }
+}
\ No newline at end of file
index 6797a4f..88b283e 100644 (file)
-var winh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
-var tblh = winh-54;
-var pagepref = undefined;
-var selection = [];
-// var cfg = {
-//   byear: 2018
-// }
-var sums = { planned: {cnt:0,sum:0},sended: {cnt:0,sum:0},payed: {cnt:0,sum:0},delayed: {cnt:0,sum:0},total: {cnt:0,sum:0}};
-var shiftdown = false;
-function initpage(){
-  console.log(appdb.url);
-  pagepref = parent.usersystem.getPreference("bookings");
-  if (pagepref === null){
-    pagepref= {};
-  }
-  console.log(pagepref);
-  //loadyears();
-  loadtable();
-  load_senders();
-  load_receipients();
-  load_dateranges();
+
+function initpage() {
+  console.log(mpref.cfg);
+  console.log("APP:" + parent.app);
+  mpref.loadconfig();
+  bookings.inittable();
+  return false;
 }
 
-$(document).on('keydown',function(evt){
-  if (evt.key= "Shift"){
-    shiftdown = true;
-  }
-});
-
-$(document).on('keyup',function(evt){
-  if (evt.key = "Shift"){
-    shiftdown = false;
-  }
-});
-
-function loadtable(){
-  var where = '';
-  if (pagepref && pagepref.filter && Object.keys(pagepref.filter).length > 0){
-    var whfilter = [];
-    for (var i in pagepref.filter){
-      console.log(i);
-      if (i == 'bookingdate'){
-        if ($("#daterange :selected").text() != ''){
-          whfilter.push(pagepref.filter[i] + "='" + $("#daterange :selected").text() + "'");
-        }
+// var winh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
+// var tblh = winh-54;
+// var pagepref = undefined;
+// var selection = [];
+// // var cfg = {
+// //   byear: 2018
+// // }
+// var sums = { planned: {cnt:0,sum:0},sended: {cnt:0,sum:0},payed: {cnt:0,sum:0},delayed: {cnt:0,sum:0},total: {cnt:0,sum:0}};
+// var shiftdown = false;
+// function initpage(){
+//   console.log(appdb.url);
+//   pagepref = parent.usersystem.getPreference("bookings");
+//   if (pagepref === null){
+//     pagepref= {};
+//   }
+//   console.log(pagepref);
+//   //loadyears();
+//   loadtable();
+//   load_senders();
+//   load_receipients();
+//   load_dateranges();
+// }
+
+// $(document).on('keydown',function(evt){
+//   if (evt.key= "Shift"){
+//     shiftdown = true;
+//   }
+// });
+
+// $(document).on('keyup',function(evt){
+//   if (evt.key = "Shift"){
+//     shiftdown = false;
+//   }
+// });
+
+// function loadtable(){
+//   var where = '';
+//   if (pagepref && pagepref.filter && Object.keys(pagepref.filter).length > 0){
+//     var whfilter = [];
+//     for (var i in pagepref.filter){
+//       console.log(i);
+//       if (i == 'bookingdate'){
+//         if ($("#daterange :selected").text() != ''){
+//           whfilter.push(pagepref.filter[i] + "='" + $("#daterange :selected").text() + "'");
+//         }
         
-      } else {
-        whfilter.push(i + "='" + pagepref.filter[i] + "'");
-      }
+//       } else {
+//         whfilter.push(i + "='" + pagepref.filter[i] + "'");
+//       }
       
-    }
-    if (whfilter.length > 0){
-      where = ' where ' + whfilter.join( " AND "); 
-    }
+//     }
+//     if (whfilter.length > 0){
+//       where = ' where ' + whfilter.join( " AND "); 
+//     }
     
-  }
-  console.log(where);
-  sums = { planned: {cnt:0,sum:0},sended: {cnt:0,sum:0},payed: {cnt:0,sum:0},delayed: {cnt:0,sum:0},total: {cnt:0,sum:0}};
-  var sql = "select strftime('%d.%m.%Y',invoicepositions.bookingdate) as bookingdate, invoicepositions.bookingdate as datesortable,invoicepositions.id,sender.company as sender,receipient.company as receipient, invoicepositions.description,replace(printf('%.2f€',quantity * unitamount),'.',',') as amount,quantity * unitamount as sumamount , invoicejournal.status from invoicepositions left join accounts sender on (invoicepositions.id_sender=sender.id) left join invoicejournal  on (invoicepositions.id_invoice=invoicejournal.id) left join accounts receipient on (invoicepositions.id_receipient=receipient.id) " + where + " order by invoicepositions.bookingdate desc;";
-  //console.log(sql);
-  //$('#tbl_bookings').bootstrapTable('destroy');
-  $("#tbl_bookings > tbody").html("");
-  var data = appdb.dbquery(sql);
-  //console.log(data.sqldata);
-  for (var i in data.sqldata){
-    var cstatus = "secondary";
-    if (data.sqldata[i].status== "geplant"){ 
-      sums.planned.cnt = sums.planned.cnt + 1; 
-      sums.planned.sum = sums.planned.sum + parseFloat(data.sqldata[i].sumamount);  
-    }
-    if (data.sqldata[i].status== "bezahlt"){ 
-      cstatus = "success"; 
-      sums.payed.cnt = sums.payed.cnt + 1;  
-      sums.payed.sum = sums.payed.sum + parseFloat(data.sqldata[i].sumamount); 
-    }
-    if (data.sqldata[i].status== "überfällig"){ 
-      cstatus = "danger"; 
-      sums.delayed.cnt = sums.delayed.cnt + 1;
-      sums.delayed.sum = sums.delayed.sum + parseFloat(data.sqldata[i].sumamount); 
-    }
-    if (data.sqldata[i].status== "verschickt"){ 
-      cstatus = "warning"; 
-      sums.sended.cnt = sums.sended.cnt + 1;
-      sums.sended.sum = sums.sended.sum + parseFloat(data.sqldata[i].sumamount); 
-    }
-    sums.total.cnt = sums.total.cnt + 1; 
-    sums.total.sum = sums.total.sum + parseFloat(data.sqldata[i].sumamount); 
-    var acolor = "";
-    if (data.sqldata[i].amount.startsWith("-")){ acolor = "text-danger"; }
-    var row = '<tr onclick="setselection(\''+ data.sqldata[i].id +'\');" id="' +data.sqldata[i].id + '">'+
-    // '<td></td>' +
-    '<td><span class="d-none">'+data.sqldata[i].datesortable+'</span> ' + data.sqldata[i].bookingdate+ '</td>' +
-    '<td>' + data.sqldata[i].receipient+ '</td>' +
-    '<td>' + data.sqldata[i].sender+ '</td>' +
-    '<td>' + data.sqldata[i].description+ '</td>' +
-    '<td class="btn-'+ cstatus+'">' + data.sqldata[i].status+ '</td>' +
-    '<td class="'+ acolor +' right">' + data.sqldata[i].amount+ '</td>' +
-    '</tr>';
-
-    $("#tbl_bookings > tbody").append(row);
-  }
-  var cols =  $("#tbl_bookings > tbody > tr:first-child").children();
-  var colnum = cols.length -1
-  console.log("childnum:" + colnum);
-  for (var i=1;i<=colnum;i++){
-    wx = $("#tbl_bookings > tbody > tr:first-child > td:nth-child("+ i +")").width();
-    wx = wx +3;
-    $("#tbl_bookings_head > thead > tr > th:nth-child("+ i +")").width(wx);
-  }
-  $("#cnt_planned").val(sums.planned.cnt);$("#sum_planned").val(sums.planned.sum.toFixed(2).toString().replace('.',','));
-  $("#cnt_payed").val(sums.payed.cnt);$("#sum_payed").val(sums.payed.sum.toFixed(2).toString().replace('.',','));
-  $("#cnt_delayed").val(sums.delayed.cnt);$("#sum_delayed").val(sums.delayed.sum.toFixed(2).toString().replace('.',','));
-  $("#cnt_total").val(sums.total.cnt);$("#sum_total").val(sums.total.sum.toFixed(2).toString().replace('.',','));
-  $("#cnt_sended").val(sums.sended.cnt);$("#sum_sended").val(sums.sended.sum.toFixed(2).toString().replace('.',','));
-}
+//   }
+//   console.log(where);
+//   sums = { planned: {cnt:0,sum:0},sended: {cnt:0,sum:0},payed: {cnt:0,sum:0},delayed: {cnt:0,sum:0},total: {cnt:0,sum:0}};
+//   var sql = "select strftime('%d.%m.%Y',invoicepositions.bookingdate) as bookingdate, invoicepositions.bookingdate as datesortable,invoicepositions.id,sender.company as sender,receipient.company as receipient, invoicepositions.description,replace(printf('%.2f€',quantity * unitamount),'.',',') as amount,quantity * unitamount as sumamount , invoicejournal.status from invoicepositions left join accounts sender on (invoicepositions.id_sender=sender.id) left join invoicejournal  on (invoicepositions.id_invoice=invoicejournal.id) left join accounts receipient on (invoicepositions.id_receipient=receipient.id) " + where + " order by invoicepositions.bookingdate desc;";
+//   //console.log(sql);
+//   //$('#tbl_bookings').bootstrapTable('destroy');
+//   $("#tbl_bookings > tbody").html("");
+//   var data = appdb.dbquery(sql);
+//   //console.log(data.sqldata);
+//   for (var i in data.sqldata){
+//     var cstatus = "secondary";
+//     if (data.sqldata[i].status== "geplant"){ 
+//       sums.planned.cnt = sums.planned.cnt + 1; 
+//       sums.planned.sum = sums.planned.sum + parseFloat(data.sqldata[i].sumamount);  
+//     }
+//     if (data.sqldata[i].status== "bezahlt"){ 
+//       cstatus = "success"; 
+//       sums.payed.cnt = sums.payed.cnt + 1;  
+//       sums.payed.sum = sums.payed.sum + parseFloat(data.sqldata[i].sumamount); 
+//     }
+//     if (data.sqldata[i].status== "überfällig"){ 
+//       cstatus = "danger"; 
+//       sums.delayed.cnt = sums.delayed.cnt + 1;
+//       sums.delayed.sum = sums.delayed.sum + parseFloat(data.sqldata[i].sumamount); 
+//     }
+//     if (data.sqldata[i].status== "verschickt"){ 
+//       cstatus = "warning"; 
+//       sums.sended.cnt = sums.sended.cnt + 1;
+//       sums.sended.sum = sums.sended.sum + parseFloat(data.sqldata[i].sumamount); 
+//     }
+//     sums.total.cnt = sums.total.cnt + 1; 
+//     sums.total.sum = sums.total.sum + parseFloat(data.sqldata[i].sumamount); 
+//     var acolor = "";
+//     if (data.sqldata[i].amount.startsWith("-")){ acolor = "text-danger"; }
+//     var row = '<tr onclick="setselection(\''+ data.sqldata[i].id +'\');" id="' +data.sqldata[i].id + '">'+
+//     // '<td></td>' +
+//     '<td><span class="d-none">'+data.sqldata[i].datesortable+'</span> ' + data.sqldata[i].bookingdate+ '</td>' +
+//     '<td>' + data.sqldata[i].receipient+ '</td>' +
+//     '<td>' + data.sqldata[i].sender+ '</td>' +
+//     '<td>' + data.sqldata[i].description+ '</td>' +
+//     '<td class="btn-'+ cstatus+'">' + data.sqldata[i].status+ '</td>' +
+//     '<td class="'+ acolor +' right">' + data.sqldata[i].amount+ '</td>' +
+//     '</tr>';
 
-function load_senders(){
-  var sql = "select distinct (sender.company) as sender from invoicepositions left join accounts sender on (invoicepositions.id_sender=sender.id) order by sender.company;";
-  $("#sender").html('<option hidden>Sender</option><option value=""></option>');
-  var data = appdb.dbquery(sql);
+//     $("#tbl_bookings > tbody").append(row);
+//   }
+//   var cols =  $("#tbl_bookings > tbody > tr:first-child").children();
+//   var colnum = cols.length -1
+//   console.log("childnum:" + colnum);
+//   for (var i=1;i<=colnum;i++){
+//     wx = $("#tbl_bookings > tbody > tr:first-child > td:nth-child("+ i +")").width();
+//     wx = wx +3;
+//     $("#tbl_bookings_head > thead > tr > th:nth-child("+ i +")").width(wx);
+//   }
+//   $("#cnt_planned").val(sums.planned.cnt);$("#sum_planned").val(sums.planned.sum.toFixed(2).toString().replace('.',','));
+//   $("#cnt_payed").val(sums.payed.cnt);$("#sum_payed").val(sums.payed.sum.toFixed(2).toString().replace('.',','));
+//   $("#cnt_delayed").val(sums.delayed.cnt);$("#sum_delayed").val(sums.delayed.sum.toFixed(2).toString().replace('.',','));
+//   $("#cnt_total").val(sums.total.cnt);$("#sum_total").val(sums.total.sum.toFixed(2).toString().replace('.',','));
+//   $("#cnt_sended").val(sums.sended.cnt);$("#sum_sended").val(sums.sended.sum.toFixed(2).toString().replace('.',','));
+// }
+
+// function load_senders(){
+//   var sql = "select distinct (sender.company) as sender from invoicepositions left join accounts sender on (invoicepositions.id_sender=sender.id) order by sender.company;";
+//   $("#sender").html('<option hidden>Sender</option><option value=""></option>');
+//   var data = appdb.dbquery(sql);
  
-  for (var i in data.sqldata){
-    $("#sender").append('<option value="'+data.sqldata[i].sender+'">'+data.sqldata[i].sender+'</option>');
-  }
-  if (pagepref && pagepref.filter && pagepref.filter.sender && pagepref.filter.sender != ''){
-    //console.log("set selection:" +  pagepref.filter.sender);
-    $("#sender").val(pagepref.filter.sender);
-  }
-}
+//   for (var i in data.sqldata){
+//     $("#sender").append('<option value="'+data.sqldata[i].sender+'">'+data.sqldata[i].sender+'</option>');
+//   }
+//   if (pagepref && pagepref.filter && pagepref.filter.sender && pagepref.filter.sender != ''){
+//     //console.log("set selection:" +  pagepref.filter.sender);
+//     $("#sender").val(pagepref.filter.sender);
+//   }
+// }
 
-function load_receipients(){
-  var sql = "select distinct (receipient.company) as receipient from invoicepositions left join accounts receipient on (invoicepositions.id_receipient=receipient.id) order by receipient.company;";
-  $("#receipient").html('<option hidden>Empfänger</option><option value=""></option>');
-  var data = appdb.dbquery(sql);
+// function load_receipients(){
+//   var sql = "select distinct (receipient.company) as receipient from invoicepositions left join accounts receipient on (invoicepositions.id_receipient=receipient.id) order by receipient.company;";
+//   $("#receipient").html('<option hidden>Empfänger</option><option value=""></option>');
+//   var data = appdb.dbquery(sql);
  
-  for (var i in data.sqldata){
-    $("#receipient").append('<option value="'+data.sqldata[i].receipient+'">'+data.sqldata[i].receipient+'</option>');
-  }
-  if (pagepref && pagepref.filter && pagepref.filter.receipient && pagepref.filter.receipient != ''){
-    //console.log("set selection:" +  pagepref.filter.receipient);
-    $("#receipient").val(pagepref.filter.receipient);
-  }
-}
+//   for (var i in data.sqldata){
+//     $("#receipient").append('<option value="'+data.sqldata[i].receipient+'">'+data.sqldata[i].receipient+'</option>');
+//   }
+//   if (pagepref && pagepref.filter && pagepref.filter.receipient && pagepref.filter.receipient != ''){
+//     //console.log("set selection:" +  pagepref.filter.receipient);
+//     $("#receipient").val(pagepref.filter.receipient);
+//   }
+// }
 
-function load_dateranges(){
-  var sql = "select strftime('%Y',bookingdate) as daterange, 'strftime(''%Y'',bookingdate)' as filter from invoicepositions where bookingdate is not null group by daterange  union select strftime('%Y %m',bookingdate) as daterange , 'strftime(''%Y %m'',bookingdate)' as filter from invoicepositions where bookingdate is not null group by daterange union  select  strftime('%Y Q',bookingdate)  || (((CAST(strftime('%m',bookingdate) AS INT) -1 ) / 3) +1)   as daterange ,'strftime(''%Y Q'',bookingdate)  || (((CAST(strftime(''%m'',bookingdate) AS INT) -1 ) / 3) +1)' as filter from invoicepositions where bookingdate is not null group by daterange order by daterange desc;";
-  $("#daterange").html('<option hidden>Datum</option><option value=""></option>');
-  var data = appdb.dbquery(sql);
+// function load_dateranges(){
+//   var sql = "select strftime('%Y',bookingdate) as daterange, 'strftime(''%Y'',bookingdate)' as filter from invoicepositions where bookingdate is not null group by daterange  union select strftime('%Y %m',bookingdate) as daterange , 'strftime(''%Y %m'',bookingdate)' as filter from invoicepositions where bookingdate is not null group by daterange union  select  strftime('%Y Q',bookingdate)  || (((CAST(strftime('%m',bookingdate) AS INT) -1 ) / 3) +1)   as daterange ,'strftime(''%Y Q'',bookingdate)  || (((CAST(strftime(''%m'',bookingdate) AS INT) -1 ) / 3) +1)' as filter from invoicepositions where bookingdate is not null group by daterange order by daterange desc;";
+//   $("#daterange").html('<option hidden>Datum</option><option value=""></option>');
+//   var data = appdb.dbquery(sql);
  
-  for (var i in data.sqldata){
-    $("#daterange").append('<option value="'+data.sqldata[i].filter+'">'+data.sqldata[i].daterange+'</option>');
-  }
-}
+//   for (var i in data.sqldata){
+//     $("#daterange").append('<option value="'+data.sqldata[i].filter+'">'+data.sqldata[i].daterange+'</option>');
+//   }
+// }
 
 
-function setfilter(id,field){
-  console.log("setFilter");
-  if (pagepref['filter'] === undefined){
-    pagepref['filter'] = {};
-  }
-  if ($("#" + id + " :selected").val() != ""){
-    pagepref['filter'][field] = $("#" + id + " :selected").val();
-  }
-  else {
-    delete pagepref['filter'][field];
-    $("#" + id + "").val($("#"+ id +" option:first").val());
-  }
-  parent.usersystem.setPreference('bookings',pagepref);
-  loadtable();
-}
+// function setfilter(id,field){
+//   console.log("setFilter");
+//   if (pagepref['filter'] === undefined){
+//     pagepref['filter'] = {};
+//   }
+//   if ($("#" + id + " :selected").val() != ""){
+//     pagepref['filter'][field] = $("#" + id + " :selected").val();
+//   }
+//   else {
+//     delete pagepref['filter'][field];
+//     $("#" + id + "").val($("#"+ id +" option:first").val());
+//   }
+//   parent.usersystem.setPreference('bookings',pagepref);
+//   loadtable();
+// }
 
-function booking_new(){
-  parent.browserapp.loadmodulepage('bookings','form_booking',{"id":null});
-}
+// function booking_new(){
+//   parent.browserapp.loadmodulepage('bookings','form_booking',{"id":null});
+// }
 
-function booking_edit(){
-  //var inv_id= getTableSelectionID();
-  if (inv_id){
-    parent.browserapp.loadmodulepage('bookings','form_booking',{"id":inv_id});
-  }
+// function booking_edit(){
+//   //var inv_id= getTableSelectionID();
+//   if (inv_id){
+//     parent.browserapp.loadmodulepage('bookings','form_booking',{"id":inv_id});
+//   }
   
-}
+// }
 
-function booking_delete(){
+// function booking_delete(){
   
-}
+// }
 
-function booking_duplicate(){
+// function booking_duplicate(){
   
-}
+// }
 
-function setselection(id){
-  if (shiftdown === true){
-    if ($("#" + id).hasClass('highlight')){
-      $("#" + id).removeClass('highlight');  
-      selection.splice($.inArray(id, selection),1);
-    }else {
-      $("#" + id).addClass('highlight');
-      selection.push(id);
-    }
-  } else {
-    $("#" + id).addClass('highlight').siblings().removeClass('highlight');
-    selection = [id];
-  }
-}
+// function setselection(id){
+//   if (shiftdown === true){
+//     if ($("#" + id).hasClass('highlight')){
+//       $("#" + id).removeClass('highlight');  
+//       selection.splice($.inArray(id, selection),1);
+//     }else {
+//       $("#" + id).addClass('highlight');
+//       selection.push(id);
+//     }
+//   } else {
+//     $("#" + id).addClass('highlight').siblings().removeClass('highlight');
+//     selection = [id];
+//   }
+// }
index 2d1ee8a..f1f2ea1 100644 (file)
-
-        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
-                <a class="navbar-brand" href="#">Buchungen</a>
-                <div class="ml-auto">
-           <div class="btn-group" role="group" aria-label="Basic example">
-    <button class="btn btn-primary" onclick="booking_new();"><i class="fas fa-plus"></i><br/>New</button>
-    <button class="btn btn-primary" onclick="booking_edit();"><i class="fas fa-edit"></i><br/>Edit</button>
-    <button class="btn btn-primary" onclick="booking_delete();"><i class="fas fa-trash"></i><br/>Delete</button>
-    <button class="btn btn-primary" onclick="booking_clone();"><i class="fas fa-clone"></i><br/>Dupl.</button>
-    
-                </div>
-              </nav>
-    <div class="cotainer-fluid" style="margin-top: 52px;">
-    <table style="width: 100%;" class="noselect">
-      <tr>
-        <td style="padding: 0px; margin: 0px;">
-          <table class="table" style="width: 100%; margin: 0px;"  id="tbl_bookings_head">
-            <thead class="thead-dark"> 
-              <tr>
-              <th><select id="daterange"  class="form-control" onchange="setfilter('daterange','bookingdate');"></select></th>
-              <th><select id="receipient"  class="form-control" onchange="setfilter('receipient','receipient');"></select></th>
-              <th><select id="sender" onchange="setfilter('sender','sender');" class="form-control"></select></th>
-              <th>Beschreibung</th>
-              <th>
-                <select id="status" onchange="setfilter('status','status');" class="form-control">
-                  <option hidden>Status</option>
-                  <option value=""></option>
-                  <option value="bezahlt">bezahlt</option>
-                  <option value="verschickt">verschickt</option>
-                  <option value="geplant">geplant</option>
-                  <option value="überfällig">überfällig</option>
-                </select>
-              </th>
-              <th >Betrag</th>
-            </tr>
-              </thead>
-          </table>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <div style="width: 100%; height: 80vh; overflow-y: scroll;">
-          <table id="tbl_bookings" style="width: 100%;" class="table table-bordered table-hover table-striped">
-            <tbody></tbody>
-          </table>
-        </div>
-        </td>
-      </tr>
-    </table>            
-    <div class="row bg-dark" style="margin: 0px;width: 100%; height: 10vh; overflow:hidden;">
-      <div class="col btn-secondary">
-        <div class="form-group">
-          <label>geplant</label>
-          <div class="form-inline">
-          <div class="input-group" style="margin: 0px  !important;">
-            <div class="input-group-prepend">
-              <div class="input-group-text">&Sigma;</div>
-            </div>
-            <input type="text" class="form-control right" id="cnt_planned"/>
-          </div>
-          <div class="input-group" style="margin: 0px  !important;">
-            <div class="input-group-prepend">
-              <div class="input-group-text">€</div>
-            </div>
-            <input type="text" class="form-control right"  id="sum_planned"/>
-          </div>
-        </div>  
-        </div>
-      </div>
-      <div class="col btn-warning">
-          <div class="form-group">
-            <label>verschickt</label>
-            <div class="form-inline">
-            <div class="input-group" style="margin: 0px  !important;">
-              <div class="input-group-prepend">
-                <div class="input-group-text">&Sigma;</div>
-              </div>
-              <input type="text" class="form-control right" id="cnt_sended"/>
-            </div>
-            <div class="input-group" style="margin: 0px  !important;">
-              <div class="input-group-prepend">
-                <div class="input-group-text">€</div>
-              </div>
-              <input type="text" class="form-control right"  id="sum_sended"/>
-            </div>
-          </div>  
-          </div>
-        </div>
-        <div class="col btn-success">
-            <div class="form-group">
-              <label>bezahlt</label>
-              <div class="form-inline">
-              <div class="input-group" style="margin: 0px  !important;">
-                <div class="input-group-prepend">
-                  <div class="input-group-text">&Sigma;</div>
-                </div>
-                <input type="text" class="form-control right" id="cnt_payed"/>
-              </div>
-              <div class="input-group" style="margin: 0px  !important;">
-                <div class="input-group-prepend">
-                  <div class="input-group-text">€</div>
-                </div>
-                <input type="text" class="form-control right"  id="sum_payed"/>
-              </div>
-            </div>  
-            </div>
-          </div>
-          <div class="col btn-danger">
-              <div class="form-group">
-                <label>überfällig</label>
-                <div class="form-inline">
-                <div class="input-group" style="margin: 0px  !important;">
-                  <div class="input-group-prepend">
-                    <div class="input-group-text">&Sigma;</div>
-                  </div>
-                  <input type="text" class="form-control right" id="cnt_delayed"/>
-                </div>
-                <div class="input-group" style="margin: 0px  !important;">
-                  <div class="input-group-prepend">
-                    <div class="input-group-text">€</div>
-                  </div>
-                  <input type="text" class="form-control right"  id="sum_delayed"/>
-                </div>
-              </div>  
-              </div>
-            </div>
-            <div class="col btn-dark">
-                <div class="form-group">
-                  <label>Total</label>
-                  <div class="form-inline">
-                  <div class="input-group" style="margin: 0px  !important;">
-                    <div class="input-group-prepend">
-                      <div class="input-group-text">&Sigma;</div>
-                    </div>
-                    <input type="text" class="form-control right" id="cnt_total"/>
-                  </div>
-                  <div class="input-group" style="margin: 0px  !important;">
-                    <div class="input-group-prepend">
-                      <div class="input-group-text">€</div>
-                    </div>
-                    <input type="text" class="form-control right"  id="sum_total"/>
-                  </div>
-                </div>  
-                </div>
-              </div>
+[% PROCESS macro/fields.tt %]
+<div class="w3-top w3-border-bottom w3-light-grey">
+    <div class="w3-bar">
+        <div class="toolbar" id="tbar_tbl_bookings">
+            <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="bookings.viewtable();"> bookings</button>
             
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="bookings.remove();"><img src="[% abspath%][% staticpath %]img/icons/remove.svg" style="height: 20px;"></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="bookings.edit();"><img src="[% abspath%][% staticpath %]img/icons/edit.svg" style="height: 20px;"></button>
+            <button class="w3-bar-item w3-button w3-border w3-right" onclick="bookings.add();"><img src="[% abspath%][% staticpath %]img/icons/plus.svg" style="height: 20px;"></button>
+        </div>
+        
     </div>
-    </div>
\ No newline at end of file
+</div>
+<div class="w3-display-container panel" id="pnl_tbl_bookings" style="margin-top: 36px;">
+    <div id="tbl_bookings"></div>
+</div>
+[% INCLUDE "block/dlgdataload.tt" %]
+[% INCLUDE "block/dlgdeleterow.tt" %]
+[% INCLUDE "block/dlgmessage.tt" %]
+<script src="bookings.js"></script>
\ No newline at end of file
diff --git a/CGI/tmpl/app/rpinas/appbutton.tt b/CGI/tmpl/app/rpinas/appbutton.tt
new file mode 100644 (file)
index 0000000..201e02c
--- /dev/null
@@ -0,0 +1 @@
+<img src="[% abspath %][% staticpath %]img/package.svg" style="width: 64px;"><br/>RPInas
\ No newline at end of file
diff --git a/CGI/tmpl/app/rpinas/index.tt b/CGI/tmpl/app/rpinas/index.tt
new file mode 100644 (file)
index 0000000..d15d27e
--- /dev/null
@@ -0,0 +1,89 @@
+<!doctype html>\r
+<html lang="en">\r
+  <head>\r
+    <meta charset="utf-8">\r
+    <meta name="viewport" content="width=device-width, initial-scale=1">\r
+    <meta name="description" content="">\r
+    <meta name="author" content="">\r
+    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />\r
+  <meta http-equiv="Pragma" content="no-cache" />\r
+  <meta http-equiv="Expires" content="0" />\r
+    <!--<link rel="icon" href="../img/favicon/creorga.png">-->\r
+\r
+    <title>Creorga </title>\r
+\r
+    <link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">\r
+       <link href="../css/main.css" rel="stylesheet">\r
+  </head>\r
+\r
+  <body oncontextmenu="return false;">\r
+\r
+    <nav class="navbar navbar-dark bg-dark fixed-top justify-content-between flex-nowrap flex-row">\r
+\r
+      <div class="mr-auto">\r
+      <div class="btn-group" role="group" aria-label="Main">\r
+      <button class="btn btn-default" id="mnubtn_childs" onclick="app.loadpage('modules/childs/index.html');"><img src="../img/modules/Children.svg" style="width: 32px; height: 32px;"/><br/>Enfants</button>\r
+      <div class="btn-group" role="group">\r
+    <button  type="button" id="mnubtn_presences" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\r
+      <img src="../img/modules/Check.svg" style="width: 32px; height: 32px;"/><br/>Présences\r
+    </button>\r
+    <div class="dropdown-menu" aria-labelledby="mnubtn_presences">\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/presences/dailypresences.html');">Présences par jour</a>\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/presences/weeklypresences.html');">Présences par Semaine</a>\r
+    </div>\r
+  </div>\r
+  <div class="btn-group" role="group">\r
+    <button  type="button" id="mnubtn_calendar" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\r
+      <img src="../img/modules/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendriers\r
+    </button>\r
+    <div class="dropdown-menu" aria-labelledby="mnubtn_calendar">\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/index.html');">Calendrier des Enfants</a>\r
+      [% IF creorga.modules.staff.planning %]\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calorganisation.html');">Calendrier du Staff</a>\r
+      [% END %]\r
+      [% IF creorga.modules.staff.vacancy %]\r
+      <a class="dropdown-item" href="javascript:app.loadpage('modules/calendar/calvacancy.html');">Calendrier des Congés</a>\r
+      [% END %]\r
+    </div>\r
+  </div>\r
+\r
+      [% IF creorga.modules.staff.menu %]\r
+      <button class="btn btn-default"  id="mnubtn_stafflist" onclick="app.loadpage('modules/staff/stafflist.html');" ><img src="../img/modules/Team.svg" style="width: 32px; height: 32px; "/><br/>Employé(e)s</button>\r
+      [% END %]\r
+      </div>\r
+      </div>\r
+\r
+      <div class="ml-auto">\r
+      <div class="btn-group" role="group" aria-label="Right">\r
+      <div class="btn-group">\r
+      [% IF creorga.modules.creche.menu %]\r
+  <button type="button" class="btn btn-default" id="mnubtn_creche" onclick="app.loadpage('modules/creche/creche.html');"><img src="../img/modules/Home.svg" style="width: 32px; height: 32px;"/><br/>Crèche</button>\r
+  [% END %]\r
+  <select id="crechelist" class="btn btn-default" class="form-control" onchange="app.changesite();">\r
+\r
+  </select>\r
+  \r
+</div>\r
+      </div>\r
+      \r
+      </div>\r
+\r
+      \r
+    </nav>\r
+\r
+    <main role="main" class="container-fluid">\r
+\r
+      <iframe src="modules/childs/index.html" id="appframe" style="width: 100%; height: calc(100vh - 90px); margin: 0px; padding: 0px;"></iframe>\r
+\r
+    </main>\r
+\r
+\r
+    <script src="../vendor/jquery/jquery.min.js"></script>\r
+    <script src="../vendor/bootstrap/js/bootstrap.bundle.min.js"></script>\r
+    <script src="../js/app.js"></script>\r
+    <script src="../js/webpreferences.js" type="text/javascript"></script>\r
+    <script src="../js/webdatabase.js" type="text/javascript"></script>\r
+    \r
+\r
+  </body>\r
+</html>\r
index 9d15a22..957d81d 100644 (file)
@@ -20,7 +20,7 @@
   <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/choices/choices.css?v=[% vstamp %]">
   <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/flatpickr/flatpickr.min.css?v=[% vstamp %]">
   <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/flatpickr/themes/airbnb.css?v=[% vstamp %]">
-  <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/fmicons/icons.css?v=[% vstamp %]">
+  <!-- <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/fmicons/icons.css?v=[% vstamp %]"> -->
   
    [% #INCLUDE "module/$module/css.tt" %]
   <!-- <script>
index dc58aa8..abc7f36 100644 (file)
--- a/dksnas.pl
+++ b/dksnas.pl
@@ -45,12 +45,12 @@ print $cfgpath."\n";
 
 my $allapp = builder {
   enable "DirIndex", dir_index => 'index.html';
-  mount "/" => Plack::App::WrapCGI->new(script => $RealBin."/CGI/index.cgi",execute => 1)->to_app;
+  mount "/" => Plack::App::WrapCGI->new(script => $RealBin."/CGI/index.cgi",)->to_app;#,execute=> 1
   
-  opendir(API,dirname($0)."/CGI/api");
+  opendir(API,$RealBin."/CGI/api");
    while (my $s = readdir(API)){
      if ($s =~ /\.cgi$/){
-       mount "/api/".$s => Plack::App::WrapCGI->new(script => $RealBin."/CGI/api/".$s,execute => 1)->to_app;
+       mount "/api/".$s => Plack::App::WrapCGI->new(script => $RealBin."/CGI/api/".$s ,)->to_app;
      }
    }
    closedir(API);
diff --git a/htdocs/img/package.svg b/htdocs/img/package.svg
new file mode 100644 (file)
index 0000000..0b6a94d
--- /dev/null
@@ -0,0 +1,3 @@
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+  <path id="package" d="M22.95465,14.261,11.06659,6.19409l3.96173-2.37671,11.99982,7.99951ZM9.17657,7.32812,5.028,9.81689l12.00019,8L21.06476,15.395ZM4,19.53516l12,7.99975V19.53516l-12-8Zm20-3.56885v2.71655a.50018.50018,0,0,1-.24274.429l-1,.59985A.5.5,0,0,1,22,19.283V17.166l-4,2.40014v7.99951l10-5.99926V13.56616Z"/>
+</svg>