v20210424
authorKilian Saffran <ksaffran@dks.lu>
Sat, 24 Apr 2021 05:46:52 +0000 (07:46 +0200)
committerKilian Saffran <ksaffran@dks.lu>
Sat, 24 Apr 2021 05:46:52 +0000 (07:46 +0200)
39 files changed:
app/api.php
app/css/fonts/appicons.svg
app/css/fonts/appicons.ttf
app/css/fonts/appicons.woff
app/css/icons.css
app/data/cache/22/22a9ee1c514b64294460dae51f0aa694375443c48b6d94639ee8c62432ea9b2d.php [deleted file]
app/data/cache/a2/a2a4e010b5506140baa756090a5e9b97c5214f97e9f61a2a71687eec3cab6740.php [deleted file]
app/data/cache/d2/d29b34ebd65f216b59f3df0861f970c63d28da6de4b6816a66e943e85460e654.php [deleted file]
app/data/cache/fd/fdd79b7ad2e5960dabd5facff6311f82cf739967157bcc5261561ac8840bc757.php [deleted file]
app/data/mail/body/user_forgotpasswd.tt [deleted file]
app/data/mail/body/user_registration.tt [deleted file]
app/data/mail/mail.tt [deleted file]
app/db.php
app/index.php
app/lib/POT/Period.php
app/lib/POT/TimeTracker.php
app/lib/config.php
app/lib/version.php [new file with mode: 0644]
app/manifest.webmanifest
app/test.php [deleted file]
app/tmpl/block/dlgstaffperioddays.html
app/tmpl/module/admin/users.js
app/tmpl/module/index.html
app/tmpl/module/index/index.js
app/tmpl/module/js/app.js
app/tmpl/module/js/dataform.js
app/tmpl/module/js/request.js
app/tmpl/module/periods/periodvalidation.js
app/tmpl/module/periods/reportperiod.js
app/tmpl/module/periods/staffperiodweeks.js
app/tmpl/module/periods/tlb_staffperiodweeks.html
app/tmpl/module/profile/profile.js
app/tmpl/module/staff/pnl_basedata.html
app/tmpl/module/staff/staff.js
app/tmpl/module/staff/staffperiods.js
app/tmpl/module/staff/staffvacancy.js
app/tmpl/module/timeclock/timeclock.js
app/tmpl/module/workplans/workplans.js
dev/diff_app.sh

index f44eafa..07c8a47 100644 (file)
@@ -55,7 +55,7 @@
         if (count($fnp) < $prcnt){\r
           $html["error"] = "Function has ".$prcnt." required parameters!";\r
         } else {\r
-          echo "call fn";\r
+          //echo "call fn";\r
           $html["result"]["data"] = call_user_func_array(array($cl, $p["fn"]), $fnp);\r
           //error_log(print_r($html,true));\r
         }\r
index 9206f20..9dd0cfa 100644 (file)
@@ -71,6 +71,9 @@
 <glyph unicode="&#xe93d;" glyph-name="plus" d="M388.095 960h247.889v-388.114h388.095v-247.869h-388.095v-388.075h-247.889v388.075h-388.095v247.869h388.095z" />
 <glyph unicode="&#xe93e;" glyph-name="eye-close" d="M614.831 504.313c6.385-14.123 10.082-29.628 10.082-46.128 0-62.324-50.504-112.825-112.818-112.825-7.969 0-15.65 0.874-23.092 2.376zM745.537 666.866c165.275-81.694 278.607-218.658 278.607-218.658s-229.284-278.172-512.082-278.172c-51 0-100.138 9.246-146.581 24.066l56.195 69.951c29.509-6.692 59.571-11.505 90.387-11.505 170.715 0 326.302 116.52 412.192 195.659-53.821 49.567-134.959 113.773-230.042 154.843zM512.103 726.395c22.377 0 44.327-2.246 65.955-5.5l-62.206-77.327c-174.47 0.316-330.062-116.213-415.954-195.348 40.447-37.258 96.649-82.512 162.278-120.273l-49.504-61.511c-128.656 80.387-212.673 181.784-212.673 181.784s229.299 278.176 512.103 278.176zM785.931 904.071l54.439-43.756-697.885-868.147-54.392 43.688z" />
 <glyph unicode="&#xe93f;" glyph-name="eye-open" d="M512.119 570.851c62.328 0 112.843-50.513 112.843-112.842 0-62.333-50.515-112.842-112.843-112.842s-112.843 50.508-112.843 112.842c0 62.329 50.515 112.842 112.843 112.842zM512.072 643.694c-170.705 0-326.292-116.534-412.173-195.668 85.882-79.144 241.468-195.654 412.173-195.654 170.708 0 326.292 116.51 412.173 195.654-85.882 79.134-241.465 195.668-412.173 195.668zM512.072 726.203c282.799 0 512.072-278.177 512.072-278.177s-229.273-278.182-512.072-278.182c-282.799 0-512.072 278.182-512.072 278.182s229.273 278.177 512.072 278.177z" />
+<glyph unicode="&#xe940;" glyph-name="sum" d="M187.344 960h671.686v-265.559h-45.831v116.311h-528.817l251.273-369.125-280.142-356.385h578.978l16.636 116.318h45.794l-37.891-265.559h-731.951v83.918l294.902 377.621-234.637 345.759v135.97z" />
+<glyph unicode="&#xe941;" glyph-name="timeentry" d="M393.929 713.001l174.72-174.764-174.72-174.827v116.073h-324.558v117.572h324.558zM205.76 960h749.061v-843.557l-279.544-180.587v180.587h-469.517v322.548h85.455v-233.539h384.062v571.835l143.461 93.764h-527.523v-233.535h-85.455z" />
+<glyph unicode="&#xe942;" glyph-name="timeexit" d="M826.547 713.055l174.681-174.731-174.681-174.856v116.127h-324.501v117.521h324.501zM22.578 960h748.846v-322.493h-85.415v233.478h-527.32l143.325-93.695v-571.717h383.995v233.478h85.415v-322.493h-469.41v-180.559l-279.436 180.559z" />
 <glyph unicode="&#xe943;" glyph-name="staff" d="M852.529 206.541c-40.953 0.285-74.344-32.751-74.586-73.619-0.285-41.010 32.708-74.331 73.589-74.616 40.981-0.285 74.373 32.609 74.629 73.619 0.256 40.868-32.708 74.331-73.632 74.616zM853.184 311.346c15.493 0 30.472-2.421 44.755-6.123l5.909-39.159c14.453-5.696 27.795-13.385 39.529-23.068l37.065 13.955c20.847-21.502 36.211-48.13 44.213-77.891l-31.042-24.777c1.153-7.405 1.908-15.094 1.837-22.784-0.086-7.832-0.897-15.379-2.136-22.784l30.743-25.204c-8.415-29.619-24.122-56.105-45.224-77.322l-36.866 14.525c-11.876-9.541-25.332-17.088-39.813-22.641l-6.436-39.017c-14.353-3.702-29.333-5.696-44.812-5.696-15.521 0.142-30.472 2.421-44.811 6.265l-5.852 39.159c-14.439 5.554-27.824 13.385-39.557 23.068l-37.065-13.955c-20.818 21.36-36.211 48.13-44.242 77.891l31.070 24.635c-1.139 7.547-1.88 15.094-1.837 22.926 0.085 7.689 0.897 15.379 2.136 22.784l-30.743 25.062c8.387 29.761 24.122 56.105 45.21 77.464l36.909-14.525c11.847 9.541 25.318 17.088 39.828 22.499l6.365 39.159c14.382 3.56 29.362 5.696 44.868 5.553zM409.028 371.574l49.657-49.694-38.586-38.587 39.825-46.143-52.696-157.924-54.289 156.107 44.44 48.528-38.046 38.019zM618.515 376.928c38.144-7.169 73.391-22.554 103.826-44.248l0.426-0.317-2.897-1.86c-63.883-43.209-105.968-116.325-105.968-199.009 0-41.386 10.521-80.353 29.028-114.37l0.909-1.579h-643.838v102.668c0 127.586 90.779 233.999 211.264 258.14l194.355-304.663zM344.453 820.627c-25.958 0.065-58.686-6.617-62.522-39.908 0 0 0-64.687-17.265-73.32l-4.285-60.371-17.266 17.252 6.459-81.938 32.358-2.176c0 0 8.634-166.017 166.052-133.689 0 0 75.464 23.726 92.699 133.689l25.901 2.176 6.459 73.32-10.776-2.173c0 0-6.491 62.544-12.949 88.412l-4.317 62.531c0 0-36.645 30.199-90.556 4.316 0 0-62.546 2.173-77.637 8.633 0 0-14.592 3.203-32.352 3.248zM418.251 942.627c73.513 0.006 124.602-38.985 124.602-38.985 94.873-75.478 43.136-204.866 43.136-204.866 21.551-12.933 19.41-23.709 19.41-23.709 0-140.181-38.819-129.388-38.819-129.388-21.583-90.57-105.648-131.53-105.648-131.53-163.908-40.977-204.867 129.371-204.867 129.371-34.503 4.316-38.819 84.095-38.819 84.095-10.809 53.91 19.409 75.477 19.409 75.477-64.718 150.938 51.737 196.216 51.737 196.216 46.692 32.612 91.352 43.315 129.859 43.318z" />
 <glyph unicode="&#xe944;" glyph-name="back" d="M580.895 960h273.723l-413.813-509.791 2.338-2.896 415.046-511.313h-273.736l-280.542 345.584-1.234-1.48-136.868 168.605 136.868 168.646z" />
 <glyph unicode="&#xe945;" glyph-name="next" d="M165.81 960h273.728l280.547-345.583 1.234 1.48 136.87-168.604-415.080-511.292h-273.741l413.82 509.792-2.338 2.896-99.387 122.396z" />
@@ -85,6 +88,8 @@
 <glyph unicode="&#xe94e;" glyph-name="baggage" d="M733.725 664.051v-522.022h122.802v522.022zM170.739 664.051v-522.022h122.77v522.022zM438.264 769.338l-22.849-67.612h194.723l-24.368 67.612zM415.655 791.666h192.707l51.857-89.94h232.036c72.769 0 131.762-54.978 131.762-122.813v-351.734c0-67.85-58.993-122.843-131.762-122.843h-760.493c-72.753 0-131.763 54.993-131.763 122.843v351.734c0 67.835 59.009 122.813 131.763 122.813h232.036z" />
 <glyph unicode="&#xe94f;" glyph-name="trash" d="M191.166 630.621h136.774v-577.939h105.019v577.939h157.78v-577.939h105.083v577.939h136.772v-694.765h-641.428zM126.98 847.182h769.8v-99.472h-769.8zM335.572 960h352.663v-90.878h-352.663z" />
 <glyph unicode="&#xe950;" glyph-name="erase" d="M88.57 4.16h886.236c18.731 0 34.042-15.353 34.042-34.060 0-18.79-15.311-34.1-34.042-34.1h-886.236c-18.729 0-34.042 15.31-34.042 34.1 0 18.707 15.313 34.060 34.042 34.060zM331.535 590.147l-248.272-249.935 157.96-161.957c13.749-13.833 48.813-37.771 68.188-37.771h104.73c19.416 0 46.979 23.937 60.73 37.771l131.647 136.812zM629.682 960c17.438 0 34.877-7.814 48.146-21.084l278.586-279.645c26.499-26.457 26.499-72.207 0-98.729l-425.897-430.494c-26.523-26.605-78.815-57.729-116.377-57.729h-104.73c-37.459 0-89.815 31.125-116.375 57.729l-157.96 167.29c-26.5 26.499-26.5 69.935 0 96.332l546.42 546.452c13.166 13.293 30.711 19.877 48.187 19.877z" />
+<glyph unicode="&#xe951;" glyph-name="normalview" d="M0 55.915h1024.031v-96.99h-1024.031zM0 287.446h1024.031v-96.974h-1024.031zM0 504.656h1024.031v-96.974h-1024.031zM0 720.919h1024.031v-96.974h-1024.031zM0 937.075h1024.031v-96.974h-1024.031z" />
+<glyph unicode="&#xe952;" glyph-name="detailview" d="M0 55.915h1024.046v-96.974h-1024.046zM441.757 287.461h582.289v-96.99h-582.289zM0 504.656h1024.046v-96.974h-1024.046zM441.757 720.919h582.289v-96.959h-582.289zM0 937.075h1024.046v-96.974h-1024.046z" />
 <glyph unicode="&#xe953;" glyph-name="projects" d="M738.064 471.472l-206.048-117.081 0.648-237.415 205.4 118.386zM296.816 471.472v-236.11l205.402-118.386 0.646 237.415zM517.439 619.312l-204.671-118.352 204.671-117.696 205.313 117.696zM92.872 910.64h327.139c51.335 0 92.917-41.604 92.917-92.904v-44.536h418.154c51.314 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.605-92.918-92.918-92.918h-838.208c-51.27 0-92.873 41.594-92.873 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.872 92.904z" />
 <glyph unicode="&#xe954;" glyph-name="usertime" d="M557.61 283.76c0 0 234.191-55.807 256.508-278.821h-814.117c0 0 66.954 245.319 267.693 267.648l54.36-232.801 39.942 0.321 45.427 119.165-42.397 73.563h84.77l-40.646-75.446 51.832-116.487 31.151 0.25zM721.151 752.498c3.881 0.061 7.808-1.164 11.085-3.756l86.55-69.216c0.927-0.749 1.758-1.573 2.49-2.458l1.384-2.053 0.604-0.177c3.044-1.077 5.694-2.969 7.708-5.437 2.408-2.972 3.834-6.662 3.883-10.763l0.775-110.79c0.044-9.547-7.646-17.359-17.196-17.446-9.534-0.042-17.332 7.639-17.418 17.206l-0.771 102.937-0.623 0.275c-0.864 0.474-1.701 1.029-2.502 1.669l-86.513 69.196c-7.448 5.987-8.658 16.859-2.723 24.365 3.363 4.163 8.277 6.368 13.267 6.447zM401.426 759.683c33.843 0 65.776-7.706 94.582-21.095-8.652-26.989-13.395-55.697-13.395-85.511 0-93.086 45.61-175.496 115.472-226.751-38.319-69.217-111.983-116.086-196.66-116.086-124.119 0-224.722 100.616-224.722 224.733 0 124.113 100.603 224.711 224.722 224.711zM786.072 821.774c-92.958 0-168.706-75.661-168.706-168.701 0-93.019 75.748-168.723 168.706-168.723 93.042 0 168.708 75.705 168.708 168.723 0 93.040-75.666 168.701-168.708 168.701zM786.072 891.011c131.44 0 237.961-106.559 237.961-237.939 0-131.359-106.521-237.917-237.961-237.917-131.347 0-237.911 106.558-237.911 237.917 0 131.38 106.564 237.939 237.911 237.939z" />
 <glyph unicode="&#xe955;" glyph-name="finger1" d="M943.765 724.484c-6.925 3.208-14.269 4.937-21.133 4.937-9.938 0-18.217-3.5-23.398-9.749-30.615-37.272-58.645-109.766-81.218-168.016-10.382-26.932-24.32-62.974-33.738-79.891-5.144 49.556 17.094 228.345 25.656 297.196l0.146 1.111c5.948 47.828 6.885 56.222 6.584 59.957-2.304 26.624-11.603 44.65-27.656 53.547-16.23 9.022-38.279 7.083-62.748-5.485-12.282-6.313-17.24-30.624-35.123-141.157l-0.073-0.499c-9.841-60.706-32.478-200.564-49.876-222.875-15.487 34.036-26.917 222.032-31.854 303.405-3.427 56.977-5.488 89.686-7.686 99.713-4.657 20.932-29.135 40.188-54.521 42.927-21.115 2.514-39.271-7.083-48.869-25.291-16.744-16.266-15.277-74.205-7.646-211.704 3.625-65.442 11.113-200.603-0.536-214.912-20.99 3.811-51.453 90.274-90.514 257.081-10.952 46.707-14.391 60.791-18.312 67.104-7.113 21.578-35.135 39.786-61.388 39.786-2.249 0-4.438-0.146-6.599-0.417-13.88-1.75-45.974-12.224-43.384-71.055 12.76-82.235 28.661-143.017 44.035-202.058l0.307-1.16c9.214-35.348 17.931-68.766 25.611-105.685 18.092-87.187 5.025-139.581 4.876-140.183-1.184-5.397-3.096-8.626-5.704-9.603-0.953-0.344-2.125-0.566-3.436-0.566-7.667 0-18.75 5.899-24.427 9.603-11.676 26.813-70.108 154.724-129.679 176.082l-2.155 0.807-2.219-0.064c-22.442-0.569-39.399-7.874-50.464-21.751-17.484-21.94-12.964-51.754-11.777-57.723l0.734-2.189c0.438-0.937 42.93-93.579 47.581-135.599 4.033-36.081 34.98-76.978 59.863-109.876l1.020-1.351c8.118-10.76 15.113-20.074 20.555-28.594 72.744-87.708 192.059-165.572 193.048-166.226 14.683-12.562 22.521-24.238 22.756-33.875 0.149-6.289-3.351-9.792-3.47-9.938l-2.892-2.645 0.244-0.271h-1.172v-21.334h346.783v7.186l17.773 59.957c55.854 178.514 57.683 333.929 57.601 334.994 0.572 5.665 16.534 59.915 29.385 103.703l0.344 1.126c25.571 87.291 57.446 195.882 65.007 237.516 3.202 17.858-7.086 35.15-26.244 44.005zM946.191 684.793c-7.345-40.501-40.532-153.555-64.742-236.122-20.978-71.429-29.604-101.308-30.31-109.346 0-1.488-0.645-150.225-56.633-329.138l-15.664-52.853h-296.359c1.208 3.622 2.073 7.81 2.036 12.687-0.073 17.137-10.943 35.080-32.532 53.437-1.193 0.77-119.558 78.75-187.856 160.954-5.464 8.73-13.792 19.751-21.858 30.374-21.864 28.916-51.839 68.593-55.093 97.968-4.876 43.819-43.989 130.687-48.978 141.568-0.621 4.395-2.666 23.784 7.339 36.267 6.045 7.561 16.062 11.777 29.769 12.525 53.386-22.25 114.369-163.831 114.971-165.267l1.303-3.023 2.615-2c3.656-2.663 22.829-16.020 41.408-16.020 4.255 0 8.264 0.667 11.844 2.030 7.412 2.782 17.051 9.667 20.735 26.603 0.621 2.292 14.635 57.553-4.712 150.751-7.704 37.287-16.619 71.369-26.016 107.493l-0.161 0.527c-15.167 58.058-30.88 118.097-43.399 198.329-1.166 26.88 6.843 42.754 22.451 44.744 17.812 2.52 40.318-12.124 42.802-23.666l3.126-8.915c3.306-10.775 9.545-37.555 13.719-55.455 35.4-150.91 68.565-275.843 115.419-275.843 3.814 0 9.412 1.108 14.455 6.474 19.267 20.311 16.224 102.002 8.867 234.183-3.573 64.021-8.094 180.517-0.907 191.977l2.901 5.984c4.417 9.506 15.387 13.77 24.092 13.77 1.272 0 2.49-0.067 3.668-0.213 14.875-1.598 31.196-13.332 33.561-24.15 1.851-8.307 4.258-48.214 7.101-94.38l0.082-1.552c16.001-264.082 26.603-328.559 53.836-328.559 30.934 0 46.062 61.461 75.895 246.114l0.146 0.77c7.311 45.222 18.324 113.248 23.23 123.247 15.989 7.999 30.517 9.962 38.946 5.333 10.708-5.917 14.23-21.812 15.271-33.957 0.033-3.296-3.278-29.772-6.447-55.416-28.925-232.454-33.083-312.208-17.103-328.2 4.24-4.2 10.218-6.024 15.572-4.791 16.312 3.436 27.093 27.958 56.052 102.973 21.894 56.588 49.082 126.952 77.301 161.268 0.228 0.244 1.574 0.937 4.52 0.937 3.458 0 7.406-0.937 11.165-2.666 7.022-3.275 14.044-9.649 12.574-17.758zM156.185 382.742c-0.332 1.948-0.457 3.857-0.569 5.792-34.791 3.354-65.947 26.84-76.884 62.267-14.525 47.082 11.968 97.186 59.041 111.711 47.070 14.516 97.168-11.959 111.699-59.041 6.365-20.671 4.642-41.853-3.114-60.386 6.645-3.065 12.592-7.899 17.021-13.98 11.831 24.281 15.040 52.823 6.453 80.664-17.995 58.289-80.062 91.123-138.363 73.14-58.317-18.007-91.123-80.089-73.137-138.397 14.239-46.126 56.082-76.147 101.81-77.812-1.61 5.29-3.029 10.623-3.957 16.041z" />
index e5731c8..a7f7299 100644 (file)
Binary files a/app/css/fonts/appicons.ttf and b/app/css/fonts/appicons.ttf differ
index c9ae0ce..a426212 100644 (file)
Binary files a/app/css/fonts/appicons.woff and b/app/css/fonts/appicons.woff differ
index 6c40406..a229b53 100644 (file)
@@ -1,10 +1,9 @@
 @font-face {
   font-family: 'appicons';
-  src:  url('fonts/appicons.eot?rmyyuw');
-  src:  url('fonts/appicons.eot?rmyyuw#iefix') format('embedded-opentype'),
-    url('fonts/appicons.ttf?rmyyuw') format('truetype'),
-    url('fonts/appicons.woff?rmyyuw') format('woff'),
-    url('fonts/appicons.svg?rmyyuw#appicons') format('svg');
+  src:
+    url('fonts/appicons.ttf?86ahp7') format('truetype'),
+    url('fonts/appicons.woff?86ahp7') format('woff'),
+    url('fonts/appicons.svg?86ahp7#appicons') format('svg');
   font-weight: normal;
   font-style: normal;
   font-display: block;
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-sum:before {
+  content: "\e940";
+}
+.icon-timeentry:before {
+  content: "\e941";
+}
+.icon-timeexit:before {
+  content: "\e942";
+}
+.icon-normalview:before {
+  content: "\e951";
+}
+.icon-detailview:before {
+  content: "\e952";
+}
 .icon-shrink:before {
   content: "\e900";
 }
diff --git a/app/data/cache/22/22a9ee1c514b64294460dae51f0aa694375443c48b6d94639ee8c62432ea9b2d.php b/app/data/cache/22/22a9ee1c514b64294460dae51f0aa694375443c48b6d94639ee8c62432ea9b2d.php
deleted file mode 100644 (file)
index 7d91b5e..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Extension\SandboxExtension;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* module/login/login.html */
-class __TwigTemplate_dfbbae8876ff7c24a9e15a225d97bc0a66047f0471e84faaa1d42a3b487c1a7b extends Template
-{
-    private $source;
-    private $macros = [];
-
-    public function __construct(Environment $env)
-    {
-        parent::__construct($env);
-
-        $this->source = $this->getSourceContext();
-
-        $this->parent = false;
-
-        $this->blocks = [
-        ];
-    }
-
-    protected function doDisplay(array $context, array $blocks = [])
-    {
-        $macros = $this->macros;
-        // line 1
-        echo "<div class=\"container\">
-            <h4>";
-        // line 2
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "clientaccess", [], "any", false, false, false, 2), "html", null, true);
-        echo "</h4>
-        </div>
-        <form name=\"frmlogin\"  method=\"POST\" id=\"frmlogin\">
-          <div class=\"container\">
-              <label for=\"username\" class=\"label\">";
-        // line 6
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "username", [], "any", false, false, false, 6), "html", null, true);
-        echo "</label>
-              <input class=\"input border\" type=\"text\" id=\"login\" name=\"login\">
-          </div>
-          <div class=\"container\">
-            <label for=\"password\" class=\"label\">";
-        // line 10
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "password", [], "any", false, false, false, 10), "html", null, true);
-        echo "</label>
-              <input class=\"input border\" type=\"password\" id=\"password\" name=\"password\">
-          </div>
-          <div class=\"container padding-16\">
-              <button type=\"submit\" name=\"btnlogin\" class=\"theme-dark button\" >";
-        // line 14
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "login", [], "any", false, false, false, 14), "html", null, true);
-        echo "</button>
-          </div>
-          <!--<div class=\"container padding-16\">
-             <a href=\"";
-        // line 17
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "forgotpassword.html\">>";
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "forgotpassword", [], "any", false, false, false, 17), "html", null, true);
-        echo "?</a>
-          </div>-->
-
-          <div class=\"container padding-16\">
-              <!--";
-        // line 21
-        echo twig_escape_filter($this->env, ($context["ua"] ?? null), "html", null, true);
-        echo "-->
-          </div>
-        </form>";
-    }
-
-    public function getTemplateName()
-    {
-        return "module/login/login.html";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  76 => 21,  67 => 17,  61 => 14,  54 => 10,  47 => 6,  40 => 2,  37 => 1,);
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "module/login/login.html", "/mnt/c/Users/ksaff/Workspace/pot_lu/app/tmplm/module/login/login.html");
-    }
-}
diff --git a/app/data/cache/a2/a2a4e010b5506140baa756090a5e9b97c5214f97e9f61a2a71687eec3cab6740.php b/app/data/cache/a2/a2a4e010b5506140baa756090a5e9b97c5214f97e9f61a2a71687eec3cab6740.php
deleted file mode 100644 (file)
index 6875b2c..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Extension\SandboxExtension;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* login.html */
-class __TwigTemplate_82c6649333c6b85a13069e5b34349444ab198ec246937a6b5c12d524b6fb051b extends Template
-{
-    private $source;
-    private $macros = [];
-
-    public function __construct(Environment $env)
-    {
-        parent::__construct($env);
-
-        $this->source = $this->getSourceContext();
-
-        $this->parent = false;
-
-        $this->blocks = [
-        ];
-    }
-
-    protected function doDisplay(array $context, array $blocks = [])
-    {
-        $macros = $this->macros;
-        // line 1
-        echo "<!DOCTYPE html>
-<html lang=\"";
-        // line 2
-        echo twig_escape_filter($this->env, ($context["lang"] ?? null), "html", null, true);
-        echo "\">
-<head>
-  <meta name=\"language\" content=\"";
-        // line 4
-        echo twig_escape_filter($this->env, ($context["lang"] ?? null), "html", null, true);
-        echo "\">
-  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, shrink-to-fit=no\">
-  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">
-  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">
-  <meta name=\"apple-mobile-web-app-title\" content=\"POT\">
-  <title>POT - Plan d'Organtisation du Travail ";
-        // line 10
-        echo twig_escape_filter($this->env, ($context["mode"] ?? null), "html", null, true);
-        echo "</title>
-    <meta name=\"robots\" content=\"noindex,nofollow\">
-<link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"";
-        // line 12
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-57x57.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"60x60\" href=\"";
-        // line 13
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-60x60.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"";
-        // line 14
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-72x72.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"";
-        // line 15
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-76x76.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"114x114\" href=\"";
-        // line 16
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-114x114.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"";
-        // line 17
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-120x120.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"";
-        // line 18
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-144x144.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"";
-        // line 19
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-152x152.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"";
-        // line 20
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-180x180.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"192x192\"  href=\"";
-        // line 21
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/android-icon-192x192.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"";
-        // line 22
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/favicon-32x32.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"";
-        // line 23
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/favicon-96x96.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"";
-        // line 24
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/favicon-16x16.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link href=\"";
-        // line 25
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphone5_splash.png\" media=\"(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 26
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphone6_splash.png\" media=\"(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 27
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphoneplus_splash.png\" media=\"(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 28
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphonex_splash.png\" media=\"(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 29
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphonexr_splash.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 30
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphonexsmax_splash.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 31
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipad_splash.png\" media=\"(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 32
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipadpro1_splash.png\" media=\"(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 33
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipadpro3_splash.png\" media=\"(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 34
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipadpro2_splash.png\" media=\"(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link rel=\"manifest\" href=\"manifest.json\">
-<link rel=\"stylesheet\" href=\"";
-        // line 36
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/css/theme";
-        echo twig_escape_filter($this->env, ($context["minify"] ?? null), "html", null, true);
-        echo ".css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<style>
-body, html {height: 100%}
-.bgimg {
-  background-image: url('";
-        // line 40
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/potbg.jpg?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "');
-  min-height: 100%;
-  background-position: center;
-  background-size: cover;
-} 
-</style>
-</head>
-<body>
-  
-  <div class=\"display-container DKS bgimg\" style=\"padding-top: 100px; \">
-
-    <div class=\"row\" >
-    <div class=\"col l4 m2 hide-small\">&nbsp;
-    </div>
-    <div class=\"col l4 m8 s12 border round\">  
-    <div class=\"container center white padding\">
-        <img src=\"";
-        // line 56
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/toplogo.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\" style=\"height: 60px;\" alt=\"logo\">
-    </div>
-    <div class=\"container white\" id=\"pnllogin\" >
-        ";
-        // line 59
-        if ((0 === twig_compare(($context["pagename"] ?? null), "forgotpassword"))) {
-            // line 60
-            echo "          ";
-            echo twig_include($this->env, $context, "module/login/forgotpassword.html");
-            echo "
-        ";
-        } elseif ((0 === twig_compare(        // line 61
-($context["pagename"] ?? null), "message"))) {
-            // line 62
-            echo "          ";
-            echo twig_include($this->env, $context, "module/login/message.html");
-            echo "
-        ";
-        } else {
-            // line 64
-            echo "          ";
-            echo twig_include($this->env, $context, "module/login/login.html");
-            echo "
-        ";
-        }
-        // line 66
-        echo "    </div>
-  </div>
-  <div class=\"col l4 m2  hide-small\">&nbsp;
-  </div>
-  </div>
-  <noscript>
-  <div class=\"row\">
-    <div class=\"col l4 m2 hide-small\">&nbsp;
-    </div>
-    <div class=\"col l4 m8 s12 border round white\"> 
-      <div class=\"container text-red large\">Javascript doit ĂŞtre activĂ© pour travailler avec POT!</div>
-    </div>
-    <div class=\"col l4 m2  hide-small\">&nbsp;
-    </div>
-  </div>
-  </noscript>
-  </div>
-</body>
-
-</html>
-";
-    }
-
-    public function getTemplateName()
-    {
-        return "login.html";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  239 => 66,  233 => 64,  227 => 62,  225 => 61,  220 => 60,  218 => 59,  210 => 56,  189 => 40,  178 => 36,  173 => 34,  169 => 33,  165 => 32,  161 => 31,  157 => 30,  153 => 29,  149 => 28,  145 => 27,  141 => 26,  137 => 25,  131 => 24,  125 => 23,  119 => 22,  113 => 21,  107 => 20,  101 => 19,  95 => 18,  89 => 17,  83 => 16,  77 => 15,  71 => 14,  65 => 13,  59 => 12,  54 => 10,  45 => 4,  40 => 2,  37 => 1,);
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "login.html", "/mnt/c/Users/ksaff/Workspace/pot_lu/app/tmplm/login.html");
-    }
-}
diff --git a/app/data/cache/d2/d29b34ebd65f216b59f3df0861f970c63d28da6de4b6816a66e943e85460e654.php b/app/data/cache/d2/d29b34ebd65f216b59f3df0861f970c63d28da6de4b6816a66e943e85460e654.php
deleted file mode 100644 (file)
index b95e7b3..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Extension\SandboxExtension;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* browser.html */
-class __TwigTemplate_46459f1d36fb489e360e068ce24c715c99812911846d2caa5c35172dacedcf15 extends Template
-{
-    private $source;
-    private $macros = [];
-
-    public function __construct(Environment $env)
-    {
-        parent::__construct($env);
-
-        $this->source = $this->getSourceContext();
-
-        $this->parent = false;
-
-        $this->blocks = [
-        ];
-    }
-
-    protected function doDisplay(array $context, array $blocks = [])
-    {
-        $macros = $this->macros;
-        // line 1
-        echo "
-<!DOCTYPE html>
-<html lang=\"";
-        // line 3
-        echo twig_escape_filter($this->env, ($context["lang"] ?? null), "html", null, true);
-        echo "\">
-<head>
-
-  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, shrink-to-fit=no\">
-  <title>POT - ";
-        // line 8
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "pot_long", [], "any", false, false, false, 8), "html", null, true);
-        echo " ";
-        echo twig_escape_filter($this->env, ($context["mode"] ?? null), "html", null, true);
-        echo "</title>
-  <meta name=\"language\" content=\"fr\">
-    <meta name=\"robots\" content=\"noindex,nofollow\">
-    <link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"img/favicon/apple-icon-57x57.png?v=";
-        // line 11
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"60x60\" href=\"img/favicon/apple-icon-60x60.png?v=";
-        // line 12
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"img/favicon/apple-icon-72x72.png?v=";
-        // line 13
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"img/favicon/apple-icon-76x76.png?v=";
-        // line 14
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"114x114\" href=\"img/favicon/apple-icon-114x114.png?v=";
-        // line 15
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"img/favicon/apple-icon-120x120.png?v=";
-        // line 16
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"img/favicon/apple-icon-144x144.png?v=";
-        // line 17
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"img/favicon/apple-icon-152x152.png?v=";
-        // line 18
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"img/favicon/apple-icon-180x180.png?v=";
-        // line 19
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"192x192\"  href=\"img/favicon/android-icon-192x192.png?v=";
-        // line 20
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"img/favicon/favicon-32x32.png?v=";
-        // line 21
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"img/favicon/favicon-96x96.png?v=";
-        // line 22
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"img/favicon/favicon-16x16.png?v=";
-        // line 23
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"stylesheet\" href=\"";
-        // line 24
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/css/theme.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<style>
-body, html {height: 100%}
-.bgimg {
-  background-image: url('";
-        // line 28
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/potbg.jpg?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "');
-  min-height: 100%;
-  background-position: center;
-  background-size: cover;
-} 
-</style>
-</head>
-<body>
-  
-  <div class=\"display-container DKS bgimg\" style=\"padding-top: 100px; \">
-
-    <div class=\"row\" >
-    <div class=\"col l4 m2 hide-small\">&nbsp;
-    </div>
-    <div class=\"col l4 m8 s12 border round\">  
-    <div class=\"container center white padding\">
-        <img src=\"";
-        // line 44
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/mg/toplogo.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\" style=\"height: 60px;\" alt=\"logo\">
-    </div>
-    <div class=\"container white\" id=\"pnllogin\" >
-      <div class=\"container\">
-            <h4>Ihr Browser wird nicht unterstĂĽtzt!</h4>
-            <h4>Votre Navigateur n'est pas supportĂ©!</h4>
-      </div>
-      <!-- <div class=\"container padding\">
-        <a class=\"text-black\" href=\"https://www.plandutravail.lu/download/POT_Setup_64bit.exe\">Download Windows Version</a>   
-      </div>
-      <div class=\"container padding\">
-        <a class=\"text-black\" href=\"https://www.plandutravail.lu/download/pot_setup.dmg\">Download MacOS Version</a>
-      </div> -->
-    </div>
-  </div>
-  <div class=\"col l4 m2  hide-small\">&nbsp;
-  </div>
-  </div>
-  <noscript>
-  <div class=\"row\">
-    <div class=\"col l4 m2 hide-small\">&nbsp;
-    </div>
-    <div class=\"col l4 m8 s12 border round white\"> 
-      <div class=\"container text-red large\">Javascript doit ĂŞtre activĂ© pour travailler avec POT!</div>
-    </div>
-    <div class=\"col l4 m2  hide-small\">&nbsp;
-    </div>
-  </div>
-  </noscript>
-  </div>
-</body>
-
-</html>";
-    }
-
-    public function getTemplateName()
-    {
-        return "browser.html";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  139 => 44,  118 => 28,  109 => 24,  105 => 23,  101 => 22,  97 => 21,  93 => 20,  89 => 19,  85 => 18,  81 => 17,  77 => 16,  73 => 15,  69 => 14,  65 => 13,  61 => 12,  57 => 11,  49 => 8,  41 => 3,  37 => 1,);
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "browser.html", "/mnt/c/Users/ksaff/Workspace/pot_lu/app/tmplm/browser.html");
-    }
-}
diff --git a/app/data/cache/fd/fdd79b7ad2e5960dabd5facff6311f82cf739967157bcc5261561ac8840bc757.php b/app/data/cache/fd/fdd79b7ad2e5960dabd5facff6311f82cf739967157bcc5261561ac8840bc757.php
deleted file mode 100644 (file)
index 75f21a5..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Extension\SandboxExtension;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* index.html */
-class __TwigTemplate_7000e3c9a492aa607a7a6febeaa22b5d41386b6c1d3c720ee6f08144999c6b9c extends Template
-{
-    private $source;
-    private $macros = [];
-
-    public function __construct(Environment $env)
-    {
-        parent::__construct($env);
-
-        $this->source = $this->getSourceContext();
-
-        $this->parent = false;
-
-        $this->blocks = [
-        ];
-    }
-
-    protected function doDisplay(array $context, array $blocks = [])
-    {
-        $macros = $this->macros;
-        // line 1
-        echo "<!DOCTYPE html>
-<html lang=\"";
-        // line 2
-        echo twig_escape_filter($this->env, ($context["lang"] ?? null), "html", null, true);
-        echo "\">
-<head>
-  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, shrink-to-fit=no\">
-  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">
-  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">
-  <meta name=\"apple-mobile-web-app-title\" content=\"POT\">
-  <title>POT - Plan d'Organtisation du Travail</title>
-  <meta name=\"language\" content=\"fr\">
-    <meta name=\"robots\" content=\"noindex,nofollow\">
-  <meta name=\"theme-color\" content=\"#fff\" >
-<link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"";
-        // line 13
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-57x57.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"60x60\" href=\"";
-        // line 14
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-60x60.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"";
-        // line 15
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-72x72.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"";
-        // line 16
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-76x76.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"114x114\" href=\"";
-        // line 17
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-114x114.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"";
-        // line 18
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-120x120.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"";
-        // line 19
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-144x144.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"";
-        // line 20
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-152x152.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"";
-        // line 21
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/apple-icon-180x180.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"192x192\"  href=\"";
-        // line 22
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/android-icon-192x192.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"";
-        // line 23
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/favicon-32x32.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"";
-        // line 24
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/favicon-96x96.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"";
-        // line 25
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/favicon/favicon-16x16.png?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link href=\"";
-        // line 26
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphone5_splash.png\" media=\"(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 27
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphone6_splash.png\" media=\"(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 28
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphoneplus_splash.png\" media=\"(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 29
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphonex_splash.png\" media=\"(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 30
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphonexr_splash.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 31
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/iphonexsmax_splash.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 32
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipad_splash.png\" media=\"(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 33
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipadpro1_splash.png\" media=\"(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 34
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipadpro3_splash.png\" media=\"(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link href=\"";
-        // line 35
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/img/splashscreens/ipadpro2_splash.png\" media=\"(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\" />
-<link rel=\"manifest\" href=\"manifest.webmanifest\">
-<link rel=\"stylesheet\" href=\"";
-        // line 37
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/css/icons.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"stylesheet\" href=\"";
-        // line 38
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/css/theme.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-
-<link rel=\"stylesheet\" href=\"";
-        // line 40
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/tabulator/css/tabulator_site.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"stylesheet\" href=\"";
-        // line 41
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/slimselect/slimselect.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"stylesheet\" href=\"";
-        // line 42
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/flatpickr/flatpickr.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"stylesheet\" href=\"";
-        // line 43
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/flatpickr/themes/airbnb.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-<link rel=\"stylesheet\" href=\"";
-        // line 44
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/suneditor/css/suneditor.min.css?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\">
-</head>
-<body>
-<div class=\"main\">
-  ";
-        // line 48
-        echo twig_include($this->env, $context, ($context["page"] ?? null));
-        echo "
-    </div>
-    ";
-        // line 50
-        echo twig_include($this->env, $context, "block/snackbar.html");
-        echo "
-";
-        // line 51
-        echo twig_include($this->env, $context, "block/dlgmessage.html");
-        echo " 
-";
-        // line 52
-        echo twig_include($this->env, $context, "block/dlgdataload.html");
-        echo " 
-";
-        // line 53
-        echo twig_include($this->env, $context, "block/dlginfo.html");
-        echo " 
-  <script>
-    let schemata = \"";
-        // line 55
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, ($context["session"] ?? null), "sessiondata", [], "any", false, false, false, 55), "schemata", [], "any", false, false, false, 55), "html", null, true);
-        echo "\"; 
-    let lbl = { \"datasaved\":\"";
-        // line 56
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["lbl"] ?? null), "datasaved", [], "any", false, false, false, 56), "html", null, true);
-        echo "\"};
-  </script>
-  <script type=\"text/javascript\" src=\"";
-        // line 58
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/tabulator/js/tabulator.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 59
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/moment/moment-with-locales.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script>
-    moment.locale('";
-        // line 61
-        echo twig_escape_filter($this->env, ($context["lang"] ?? null), "html", null, true);
-        echo "');
-  </script>
-  <script type=\"text/javascript\" src=\"";
-        // line 63
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/slimselect/slimselect.min.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 64
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/flatpickr/flatpickr.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 65
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/flatpickr/l10n/";
-        echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, ($context["session"] ?? null), "lang", [], "any", false, false, false, 65), "html", null, true);
-        echo ".js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 66
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/flatpickr/plugins/weekSelect/weekSelect.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 67
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/vendors/suneditor/suneditor.min.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 68
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/js/request.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 69
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/js/app.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 70
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/js/timecalc.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 71
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/js/dataform.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  <script type=\"text/javascript\" src=\"";
-        // line 72
-        echo twig_escape_filter($this->env, ($context["abspath"] ?? null), "html", null, true);
-        echo "static/js/report.js?v=";
-        echo twig_escape_filter($this->env, ($context["appversion"] ?? null), "html", null, true);
-        echo "\"></script>
-  
-</body>
-
-</html>";
-    }
-
-    public function getTemplateName()
-    {
-        return "index.html";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  324 => 72,  318 => 71,  312 => 70,  306 => 69,  300 => 68,  294 => 67,  288 => 66,  280 => 65,  274 => 64,  268 => 63,  263 => 61,  256 => 59,  250 => 58,  245 => 56,  241 => 55,  236 => 53,  232 => 52,  228 => 51,  224 => 50,  219 => 48,  210 => 44,  204 => 43,  198 => 42,  192 => 41,  186 => 40,  179 => 38,  173 => 37,  168 => 35,  164 => 34,  160 => 33,  156 => 32,  152 => 31,  148 => 30,  144 => 29,  140 => 28,  136 => 27,  132 => 26,  126 => 25,  120 => 24,  114 => 23,  108 => 22,  102 => 21,  96 => 20,  90 => 19,  84 => 18,  78 => 17,  72 => 16,  66 => 15,  60 => 14,  54 => 13,  40 => 2,  37 => 1,);
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "index.html", "/mnt/c/Users/ksaff/Workspace/pot_lu/app/tmplm/index.html");
-    }
-}
diff --git a/app/data/mail/body/user_forgotpasswd.tt b/app/data/mail/body/user_forgotpasswd.tt
deleted file mode 100644 (file)
index 0c9ced9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[% quser = dksdb.query("select prename,surname from public.users where id='$userid';") %]
-[% user = quser.get_all() %]
-Bonjour [% user.0.prename %] [% user.0.surname %],<br/>
-<br/>
-vous avez demandĂ© un nouveau mot de passe via plandutravail.lu!<br/>
-cliquer ci-dessous pour confirmer votre demande.<a>
-<a href="[% siteurl %]/accountreset.html">Changer mot de passe</a>
-<br/>
-<br/>
-Meilleurs salutations,<br/>
-<br/>
-POT Support Team
\ No newline at end of file
diff --git a/app/data/mail/body/user_registration.tt b/app/data/mail/body/user_registration.tt
deleted file mode 100644 (file)
index 70f729a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-[% quser = dksdb.query("select prename,surname from public.users where id='$userid';") %]
-[% user = quser.get_all() %]
-Bonjour [% user.0.prename %] [% user.0.surname %],<br/>
-<br/>
-[% quser = dksdb.query("select username,vcode from public.users where id='$userid';") %]
-[% user = quser.get_all() %]
-Merci pour votre crĂ©ation de compte sur pot.lu,
-<br/><br/>
-votre code de validation: <strong  style="font-family: Courier New,Courier,Lucida Sans Typewriter,Lucida Typewriter,monospace;">[% user.0.vcode %]</strong><br/>
-Finissez votre rĂ©gistration en entrant le votre code de validation ici: <a href="[% siteurl %]/validation.html">[% siteurl %]validation.html</a> 
-<br/>
-<br/>
-Meilleurs salutations,<br/>
-<br/>
-POT Support Team
diff --git a/app/data/mail/mail.tt b/app/data/mail/mail.tt
deleted file mode 100644 (file)
index c42d41c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-[% USE DBI %]
-[% USE dksdb = DBI(dsn, dbuser, dbpassword) %]
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <style>
-    body,html {
-        margin: 0;
-        background-color: #fff;
-    }
-  </style>
-  </head>
-  <body bgcolor="#607d8b">
-    <div class="maincontainer" align="left" style="padding-top: 5px; width: auto; background-color: #607d8b!important; color: #fff;">
-        POT - Plan d'organisation de travail</span>
-      <div  style="background-color: #fff; color: #000">
-        <div class="mailcontent" align="left" style="padding: 10px; color: #000;">
-          [% INCLUDE "body/$bodytemplate" %]
-        </div>
-      </div>
-    </div>
-  </body>
-</html>
\ No newline at end of file
index f6fc02f..f4f41f5 100644 (file)
       if ($p["value"] != ""){
         $val = "'".$db->securetext($p["value"])."'";
       }
+      
       $usql = "UPDATE ".$schema.".".$db->securetext($p["table"])." SET ".$db->securetext($p["column"])."=".$val." WHERE id='".$db->securetext($p["id"])."';";
+      //file_put_contents("sql.log",$usql."\n",FILE_APPEND);
       $html["result"] = $db->exec($usql);  
     } 
   }
index 35703f5..5d39327 100644 (file)
@@ -162,8 +162,8 @@ if ($vars["ctype"] == "text/html"){
   //error_log($dd);\r
   echo $dd;\r
 }\r
-if ($vars["ctype"] == 'text/html'){\r
-       print '<pre style="display:none;">'.print_r($vars,true)."<pre>";\r
-} \r
+// if ($vars["ctype"] == 'text/html'){\r
+//        print '<pre style="display:none;">'.print_r($vars,true)."<pre>";\r
+// \r
 \r
 ?>
\ No newline at end of file
index c4d80eb..8fd9934 100644 (file)
@@ -158,9 +158,9 @@ function getPeriodWeekSums($schema,$id_staff, $date_start,$date_end,$id_period){
   $date_end=$pdate["enddate"];
   $pstart =$pdate["periodstart"];
   $pend =$pdate["periodend"];
+
   $sql = "select ws.weekstart,ws.weekend,ws.calweek,ws.calyear, ws.id_staff
   ,to_char(ws.workhours::interval,'HH24:MI') as workhours
-  --,to_char(ws.vacancyhours+ws.vacillhours+ws.vacextrahours,'HH24:MI') as vacancyhours
   ,to_char(ws.vacancyhours,'HH24:MI') as vacancynormal
   ,to_char(ws.vacillhours,'HH24:MI') as vacancyill
   ,to_char(ws.vacextrahours,'HH24:MI') as vacancyextra
@@ -171,10 +171,11 @@ function getPeriodWeekSums($schema,$id_staff, $date_start,$date_end,$id_period){
   ,cd.contractworkdays
   ,cd.cmpcontractdays
   ,cd.cmpweekhours
-  ,to_char(ttr.weektrackedhours,'HH24:MI') as weektrackedhours
-       ,interval_to_char(sum(ttr.weektrackedhours) over (order by ws.weekstart) - sum(ws.periodworkhours::interval) over (order by ws.weekstart)) as periodtrackdiff
+  ,to_char(coalesce(ttr.weektrackedhours,'00:00:00'::interval),'HH24:MI') as weektrackedhours
+  ,ws.periodworkhours
+       ,interval_to_char(sum(coalesce(ttr.weektrackedhours,'00:00:00'::interval)) over (order by ws.weekstart) - sum(ws.periodworkhours::interval) over (order by ws.weekstart)) as periodtrackdiff
        ,sum(ws.workhours::interval) over (order by ws.weekstart) as runningworkhours
-       ,interval_to_char(ttr.weektrackedhours - ws.periodworkhours::interval) as trackeddiff
+       ,interval_to_char(coalesce(ttr.weektrackedhours,'00:00:00'::interval) - ws.periodworkhours::interval) as trackeddiff
   ,case when cd.contractworkdays < cd.cmpcontractdays then to_char(cd.contractworkdays*'08:00:00'::interval,'HH24:MI') else to_char(cd.contracthours,'HH24:MI') end as contracthours
   ,to_char(AVG(ws.totalhours) over (order by ws.weekstart),'HH24:MI') as avgtotalhours
   ,case when cd.contractworkdays < cd.cmpcontractdays then '00:00' else interval_to_char(ws.totalhours-cd.contracthours) end as diffhours
@@ -189,7 +190,8 @@ function getPeriodWeekSums($schema,$id_staff, $date_start,$date_end,$id_period){
   from (
   SELECT weekstart,weekend,calweek,calyear, id_staff,
                     sum(CASE WHEN srpd.workhours IS NULL THEN '00:00:00'::interval ELSE srpd.workhours::interval END) AS workhours,
-                    sum(case when srpd.daydate between date('".$pstart."') and date('".$pend."') then coalesce(srpd.workhours::interval, '00:00:00'::interval) + case when srpd.workhours::interval > '06:00:00'::interval and srpd.timepause is null then '00:30:00'::interval else coalesce(srpd.timepause::interval,'00:00:00'::interval) end else '00:00:00'::interval end) as periodworkhours,
+                    sum(case when srpd.daydate between date('".$pstart."') and date('".$pend."') then coalesce(srpd.workhours::interval, '00:00:00'::interval)  else '00:00:00'::interval end) as periodworkhours,
+                    --sum(case when srpd.daydate between date('".$pstart."') and date('".$pend."') then coalesce(srpd.workhours::interval, '00:00:00'::interval) else '00:00:00'::interval end) as periodworkhoursnopause,
                     sum(CASE WHEN srpd.vacancyhours IS NULL THEN '00:00:00'::interval ELSE srpd.vacancyhours::interval END) AS vacancyhours,
                     sum(CASE WHEN srpd.vacillhours IS NULL THEN '00:00:00'::interval ELSE srpd.vacillhours::interval END) AS vacillhours,
                     sum(CASE WHEN srpd.vacextrahours IS NULL THEN '00:00:00'::interval ELSE srpd.vacextrahours::interval END) AS vacextrahours,
@@ -229,11 +231,95 @@ function getPeriodWeekSums($schema,$id_staff, $date_start,$date_end,$id_period){
   where id_staff='".$id_staff."' and lpd.daydate between date('".$date_start."') and date('".$date_end."')
   order by lpd.daydate ) mh group by id_staff,weekstart
   ) maxdata on ws.id_staff = maxdata.id_staff and ws.weekstart=maxdata.weekstart
-  left join (select weekstart,id_staff,sum(trackedhours) as weektrackedhours from (
-    select date(date_trunc('week',daydate)) as weekstart,id_staff,(stamp_out-stamp_in)::interval as trackedhours from ".$schema.".timetracker 
-    where daydate between date('".$pstart."') and date('".$pend."') and id_staff ='".$id_staff."') ttx group by weekstart,id_staff
-    ) ttr on ws.weekstart=ttr.weekstart and ws.id_staff=ttr.id_staff";
-  //file_put_contents("sql.log","WS: ".$sql,FILE_APPEND);
+  left join (
+  select weekstart,id_staff,coalesce(sum(daytracked),'00:00:00'::interval) as weektrackedhours from (
+    select daydate,id_staff,weekstart,case when sum(trackedhours) > '06:00:00'::interval then sum(trackedhours)- '00:30:00'::interval else coalesce(sum(trackedhours),'00:00:00'::interval) end as daytracked from (
+select daydate,date(date_trunc('week',daydate)) as weekstart,id_staff,(stamp_out-stamp_in)::interval as trackedhours from ".$schema.".timetracker 
+where daydate between date('".$pstart."') and date('".$pend."') and id_staff ='".$id_staff."') tto group by daydate,id_staff,weekstart,trackedhours) ttx group by weekstart,id_staff
+    ) ttr on ws.weekstart=ttr.weekstart and ws.id_staff=ttr.id_staff;";
+
+
+  // $sql = "select ws.weekstart,ws.weekend,ws.calweek,ws.calyear, ws.id_staff
+  // ,to_char(ws.workhours::interval,'HH24:MI') as workhours
+  // --,to_char(ws.vacancyhours+ws.vacillhours+ws.vacextrahours,'HH24:MI') as vacancyhours
+  // ,to_char(ws.vacancyhours,'HH24:MI') as vacancynormal
+  // ,to_char(ws.vacillhours,'HH24:MI') as vacancyill
+  // ,to_char(ws.vacextrahours,'HH24:MI') as vacancyextra
+  // ,to_char(ws.otherpaidhours,'HH24:MI') as otherpaidhours
+  // ,to_char(ws.partunemplhours,'HH24:MI') as partunemplhours
+  // ,to_char(ws.recuperationhours,'HH24:MI') as recuperationhours
+  // ,to_char(ws.totalhours,'HH24:MI') as totalhours
+  // ,cd.contractworkdays
+  // ,cd.cmpcontractdays
+  // ,cd.cmpweekhours
+  // ,to_char(coalesce(ttr.weektrackedhours,'00:00:00'::interval),'HH24:MI') as weektrackedhours
+  // ,ws.periodworkhours
+       // ,interval_to_char(sum(coalesce(ttr.weektrackedhours,'00:00:00'::interval)) over (order by ws.weekstart) - sum(ws.periodworkhours::interval) over (order by ws.weekstart)) as periodtrackdiff
+       // ,sum(ws.workhours::interval) over (order by ws.weekstart) as runningworkhours
+       // ,interval_to_char(coalesce(ttr.weektrackedhours,'00:00:00'::interval) - ws.periodworkhours::interval) as trackeddiff
+  // ,case when cd.contractworkdays < cd.cmpcontractdays then to_char(cd.contractworkdays*'08:00:00'::interval,'HH24:MI') else to_char(cd.contracthours,'HH24:MI') end as contracthours
+  // ,to_char(AVG(ws.totalhours) over (order by ws.weekstart),'HH24:MI') as avgtotalhours
+  // ,case when cd.contractworkdays < cd.cmpcontractdays then '00:00' else interval_to_char(ws.totalhours-cd.contracthours) end as diffhours
+  // ,case when cd.contractworkdays < cd.cmpcontractdays then 
+  //   to_char(case when cd.cmpweekhours < '40:00:00'::interval then cd.contracthours * 1.15 *  cd.contractworkdays else (cd.contractworkdays*'08:00:00'::interval) + (cd.contractworkdays* case when maxdata.maxweekhours > '48:00:00' then '01:16:50'::interval else '00:50:00'::interval end)  end,'HH24:MI') 
+  //   else
+  // to_char(case when cd.contracthours < '40:00:00'::interval then cd.contracthours * 1.15  else maxdata.maxweekhours end,'HH24:MI')
+  // end  as maxweekhours
+  // ,case when cd.contractworkdays < cd.cmpcontractdays then to_char(cd.contractworkdays*'08:00:00'::interval,'HH24:MI') else 
+  //   to_char(case when cd.contracthours < '40:00:00'::interval then cd.contracthours else maxdata.defaultweekhours end,'HH24:MI') 
+  //  end as defaultweekhours
+  // from (
+  // SELECT weekstart,weekend,calweek,calyear, id_staff,
+  //                   sum(CASE WHEN srpd.workhours IS NULL THEN '00:00:00'::interval ELSE srpd.workhours::interval END) AS workhours,
+  //                   sum(case when srpd.daydate between date('".$pstart."') and date('".$pend."') then coalesce(srpd.workhours::interval, '00:00:00'::interval) + case when srpd.workhours::interval > '06:00:00'::interval and srpd.timepause is null then '00:30:00'::interval else coalesce(srpd.timepause::interval,'00:00:00'::interval) end else '00:00:00'::interval end) as periodworkhours,
+  //                   sum(case when srpd.daydate between date('".$pstart."') and date('".$pend."') then coalesce(srpd.workhours::interval, '00:00:00'::interval) else '00:00:00'::interval end) as periodworkhoursnopause,
+  //                   sum(CASE WHEN srpd.vacancyhours IS NULL THEN '00:00:00'::interval ELSE srpd.vacancyhours::interval END) AS vacancyhours,
+  //                   sum(CASE WHEN srpd.vacillhours IS NULL THEN '00:00:00'::interval ELSE srpd.vacillhours::interval END) AS vacillhours,
+  //                   sum(CASE WHEN srpd.vacextrahours IS NULL THEN '00:00:00'::interval ELSE srpd.vacextrahours::interval END) AS vacextrahours,
+  //                   sum(CASE WHEN srpd.recuperationhours IS NULL THEN '00:00:00'::interval ELSE srpd.recuperationhours::interval END) AS recuperationhours,
+  //                   sum(CASE WHEN srpd.otherpaidhours IS NULL THEN '00:00:00'::interval ELSE srpd.otherpaidhours::interval END) AS otherpaidhours,
+  //                   sum(CASE WHEN srpd.partunemplhours IS NULL THEN '00:00:00'::interval ELSE srpd.partunemplhours::interval END) AS partunemplhours,
+  //                   sum(CASE WHEN srpd.dayhours IS NULL THEN '00:00:00'::interval ELSE srpd.dayhours::interval END) AS totalhours,
+  //                   sum(CASE WHEN srpd.workhours > '00:00:00'::time without time zone OR srpd.recuperationhours > '00:00:00'::time without time zone OR srpd.vacancyhours > '00:00:00'::time without time zone OR srpd.vacillhours > '00:00:00'::time without time zone OR srpd.vacextrahours > '00:00:00'::time without time zone OR srpd.otherpaidhours > '00:00:00'::time without time zone or srpd.partunemplhours > '00:00:00'::time without time zone THEN 1 ELSE 0 END) AS workdays,
+  //                   sum( CASE WHEN srpd.contracthours IS NULL THEN '00:00:00'::interval ELSE srpd.contracthours::interval END) AS contracthours
+  //                  FROM (select *,date(date_trunc('week', daydate)) AS weekstart,
+  //                   date(date_trunc('week', daydate) + interval '6 days') AS weekend,
+  //                   date_part('week', daydate) AS calweek,
+  //                   date_part('isoyear', daydate) AS calyear from ".$schema.".staffreportperioddays
+  //                   where id_staff= '".$id_staff."' and daydate between date('".$date_start."') and date('".$date_end."')
+  //                   ) srpd GROUP BY srpd.weekstart,srpd.weekend,srpd.calweek,srpd.calyear,srpd.id_staff
+  //                 ORDER BY weekstart) ws left join (
+  //                   select date(date_trunc('week',pd.daydate)) as weekstart,pd.id_staff,max(sc.weekdays) as cmpcontractdays,max(sc.weekhours) as cmpweekhours,
+  // case when count(pd.daydate) < avg(sc.weekdays) then count(pd.daydate) else avg(sc.weekdays) end as contractworkdays, 
+  // case when count(pd.daydate) < avg(sc.weekdays) then avg(sc.weekhours/ sc.weekdays) *  count(pd.daydate) else avg(sc.weekhours/ sc.weekdays) * avg(sc.weekdays) end as contracthours ,sum(case when coalesce(pd.workhours,'00:00:00'::time) > '00:00:00'::time then 1 else 0 end) as realworkdays
+  // from ( select id_staff,weekdays ,weekhours,
+  //   case when startdate> date('".$date_start."') then startdate else date('".$date_start."') end  as staffperiodstart, 
+  //   case when enddate is null or enddate > date('".$date_end."') then date('".$date_end."')
+  //   else enddate end as staffperiodend from ".$schema.".staffcontract where id_staff='".$id_staff."' 
+  //   and startdate < date('".$date_end."')
+  // ) sc 
+  // join ".$schema.".staffreportperioddays pd on (pd.id_staff=sc.id_staff and pd.daydate between sc.staffperiodstart and sc.staffperiodend)
+  // group by date(date_trunc('week',pd.daydate)),pd.id_staff
+  //                 ) cd on ws.id_staff = cd.id_staff and ws.weekstart=cd.weekstart
+  // left join (
+  //   select id_staff,weekstart,max(defaultweekhours) as defaultweekhours,avg(maxweekhours) as maxweekhours from (
+  // select lpd.id_staff,date(date_trunc('week',lpd.daydate)) as weekstart,lpd.daydate,
+  // case when wk.defaultweekhours is null then wkdef.defaultweekhours else wk.defaultweekhours end as defaultweekhours ,
+  // case when wk.maxweekhours is null then wkdef.maxweekhours else wk.maxweekhours end as maxweekhours 
+  // from ".$schema.".staffreportperioddays lpd
+  // left join ".$schema.".worktimes wk on (lpd.daydate between wk.startdate and wk.enddate)
+  // cross join (select * from ".$schema.".worktimes where isdefault=true) wkdef
+  // where id_staff='".$id_staff."' and lpd.daydate between date('".$date_start."') and date('".$date_end."')
+  // order by lpd.daydate ) mh group by id_staff,weekstart
+  // ) maxdata on ws.id_staff = maxdata.id_staff and ws.weekstart=maxdata.weekstart
+  // left join (select weekstart,id_staff,sum(trackedhours) as weektrackedhours from (
+  //   select weekstart,id_staff,coalesce(sum(daytracked),'00:00:00'::interval) as weektrackedhours from (
+  //     select daydate,id_staff,weekstart,case when sum(trackedhours) > '06:00:00'::interval then sum(trackedhours)- '00:30:00'::interval else coalesce(sum(trackedhours),'00:00:00'::interval) end as daytracked from (
+  // select daydate,date(date_trunc('week',daydate)) as weekstart,id_staff,(stamp_out-stamp_in)::interval as trackedhours from ".$schema.".timetracker 
+  // where daydate between date('".$pstart."') and date('".$pend."') and id_staff ='".$id_staff."') tto group by daydate,id_staff,weekstart,trackedhours) ttx group by weekstart,id_staff
+  //   ) ttr on ws.weekstart=ttr.weekstart and ws.id_staff=ttr.id_staff";
+  
+  file_put_contents("sql.log","WS: ".$sql);
   
   $ret = $this->dbh->querybykey('weekstart',$sql);
 
@@ -275,7 +361,7 @@ function getPeriodDays($schema,$id_staff,$date_start,$date_end){
             to_char(coalesce(max(wk.mindailyrecuperation),max(wkstd.mindailyrecuperation)),'HH24:MI') as mindailyrecuperation,
             to_char(coalesce(max(wk.maxinterruptionhours),max(wkstd.maxinterruptionhours)),'HH24:MI') as maxinterruptionhours,
             max(vd.vacancyname) as vacancyname,
-            to_char(case when pd.workhours >= '06:00:00'::interval and pd.payedpause is null and max(tt.trackedtime) > '00:30:00'::interval then max(tt.trackedtime) - case when pd.timepause::interval > '00:30:00'::interval then pd.timepause::interval else '00:30:00'::interval end else max(tt.trackedtime) end,'HH24:MI') as trackedtime,
+            to_char(case when (max(tt.trackedtime) >= '06:00:00'::interval) then max(tt.trackedtime) - case when pd.timepause::interval > '00:30:00'::interval then pd.timepause::interval else '00:30:00'::interval end else max(tt.trackedtime) end,'HH24:MI') as trackedtime,
             max(tt.incompletetrack) as incompletetrack
             FROM ".$schema.".staffreportperioddays pd
              JOIN ".$schema.".staff st ON pd.id_staff = st.id and st.id='".$id_staff."' and st.isdeleted is null
index e86c795..fca6c87 100644 (file)
@@ -173,24 +173,48 @@ public function setTracker($schema,$tracker,$data){
 
  public function getWeekStamps($schema,$date){
   
-   $xsql = "select yy.id_staff,yy.staffname,xx.cw,xx.montime,xx.tuetime,xx.wedtime,xx.thutime,xx.fritime,xx.sattime,xx.suntime,xx.weeksum from (
-    select st.id as id_staff,st.surname || ' ' || st.prename as staffname  from ".$schema.".staffcontract sc  join ".$schema.".staff st on (st.id=sc.id_staff) 
+   $xsql = "select yy.id_staff,yy.staffname,yy.groupname,xx.cw,
+   xx.montime,xx.monentry,xx.monexit,
+   xx.tuetime,xx.tueentry,xx.tueexit,
+   xx.wedtime,xx.wedentry,xx.wedexit,
+   xx.thutime,xx.thuentry,xx.thuexit,
+   xx.fritime,xx.frientry,xx.friexit,
+   xx.sattime,xx.satentry,xx.satexit,
+   xx.suntime,xx.sunentry,xx.sunexit,
+    xx.weeksum from (
+    select st.id as id_staff,st.surname || ' ' || st.prename as staffname,gg.groupname  from ".$schema.".staffcontract sc  join ".$schema.".staff st on (st.id=sc.id_staff) left join ".$schema.".staffgroups gg on (gg.id=st.id_staffgroup)
     where (sc.enddate >= date_trunc('week',date('".$date."') + interval '6 days') or enddate is null) and sc.startdate <= date_trunc('week',date('".$date."') + interval '6 days')
     and st.isdeleted is null
-    group by st.id,st.surname,st.prename) yy left join (
+    group by st.id,st.surname,st.prename,gg.groupname) yy left join (
     select id_staff,cw,
-       to_char(sum(case when dow = 1 then daystamptime else null end),'HH24:MI') as montime,
-       to_char(sum(case when dow = 2 then daystamptime else null end),'HH24:MI') as tuetime,
-       to_char(sum(case when dow = 3 then daystamptime else null end),'HH24:MI') as wedtime,
-       to_char(sum(case when dow = 4 then daystamptime else null end),'HH24:MI') as thutime,
-       to_char(sum(case when dow = 5 then daystamptime else null end),'HH24:MI') as fritime,
-       to_char(sum(case when dow = 6 then daystamptime else null end),'HH24:MI') as sattime,
-       to_char(sum(case when dow = 7 then daystamptime else null end),'HH24:MI') as suntime,
+    to_char(sum(case when dow = 1 then daystamptime else null end),'HH24:MI') as montime,
+    min(case when dow = 1 then timeentry else null end) as monentry,
+    max(case when dow = 1 then timeexit else null end) as monexit,
+    to_char(sum(case when dow = 2 then daystamptime else null end),'HH24:MI') as tuetime,
+    min(case when dow = 2 then timeentry else null end) as tueentry,
+    max(case when dow = 2 then timeexit else null end) as tueexit,
+    to_char(sum(case when dow = 3 then daystamptime else null end),'HH24:MI') as wedtime,
+    min(case when dow = 3 then timeentry else null end) as wedentry,
+    max(case when dow = 3 then timeexit else null end) as wedexit,
+    to_char(sum(case when dow = 4 then daystamptime else null end),'HH24:MI') as thutime,
+    min(case when dow = 4 then timeentry else null end) as thuentry,
+    max(case when dow = 4 then timeexit else null end) as thuexit,
+    to_char(sum(case when dow = 5 then daystamptime else null end),'HH24:MI') as fritime,
+    min(case when dow = 5 then timeentry else null end) as frientry,
+    max(case when dow = 5 then timeexit else null end) as friexit,
+    to_char(sum(case when dow = 6 then daystamptime else null end),'HH24:MI') as sattime,
+    min(case when dow = 6 then timeentry else null end) as satentry,
+    max(case when dow = 6 then timeexit else null end) as satexit,
+    to_char(sum(case when dow = 7 then daystamptime else null end),'HH24:MI') as suntime,
+    min(case when dow = 7 then timeentry else null end) as sunentry,
+    max(case when dow = 7 then timeexit else null end) as sunexit,
        to_char(sum(daystamptime),'HH24:MI') as weeksum
         from (
        select id_staff, 
        date_part('week',daydate) as cw,
-       sum(coalesce((stamp_out-stamp_in)::interval,'00:00:00')) as daystamptime, 
+       to_char(min(stamp_in),'HH24:MI') as timeentry,
+       to_char(max(stamp_out),'HH24:MI') as timeexit,
+       case when sum(coalesce((stamp_out-stamp_in)::interval,'00:00:00')) >= '06:00:00'::interval then sum(coalesce((stamp_out-stamp_in)::interval,'00:00:00')) - '00:30:00'::interval else sum(coalesce((stamp_out-stamp_in)::interval,'00:00:00')) end as daystamptime,
        date_part('isodow',daydate) as dow,daydate
        from ".$schema.".timetracker tt where tt.daydate between date_trunc('week',date('".$date."')) and date(date_trunc('week',date('".$date."')) + interval '6 days') group by tt.id_staff,daydate
        ) ttd group by id_staff,cw) xx on yy.id_staff=xx.id_staff;";
index 5090ecd..156d4a0 100644 (file)
@@ -1,13 +1,12 @@
 <?php
   $cfg = array(
-    "appversion" => '1.4.0',
     "basepath" => substr(dirname($_SERVER["SCRIPT_FILENAME"]),strlen($_SERVER["DOCUMENT_ROOT"])).'/',
     "templatepath" => "tmpl/",
     "webdocroot" => $_SERVER["DOCUMENT_ROOT"].'/'.substr(dirname($_SERVER["SCRIPT_FILENAME"]),strlen($_SERVER["DOCUMENT_ROOT"])).'/',
     "cache" => "data/cache/",
     "datapath" => "data/output/",
     "liveurl" => "https://dks-pc1/potapp/",
-    "cookie" => "potlu140",
+    //"cookie" => "potlu140",
     "db"=> array(
       "type" => "pgsql",
       "host" => "dks-pc1",
@@ -18,9 +17,9 @@
     "htxuser" => "htx",
     "htxpwd" => "Aib5aevo",
     "htxurl" => "https://htx.plandutravail.lu/htx/api.php",
-    "curlua" => "POT Local Test Server",
-    //"liveurl" => "https://app.plandutravail.lu",
-    // "cookie" => "potlu140",
+    "curlua" => "POT Server",
+    // "liveurl" => "https://app.plandutravail.lu",
+    "cookie" => "potlu140",
     // "db"=> array(
     //   "type" => "pgsql",
     //   "host" => "sql12.your-server.de",
@@ -28,7 +27,7 @@
     //   "user" => 'potlu2_user',
     //   "password" => 'dMY8xGB6cBLzrDGE',
     // ),
-    // "liveurl" => "https://beta.plandutravail.lu",
+    // // "liveurl" => "https://beta.plandutravail.lu",
     // "cookie" => "potlubeta",
     // "db"=> array(
     //   "type" => "pgsql",
@@ -44,5 +43,5 @@
     "version" => date("YmdHis"),
     "minify" => "",
   );
-
+  require_once("lib/version.php");
 ?>
\ No newline at end of file
diff --git a/app/lib/version.php b/app/lib/version.php
new file mode 100644 (file)
index 0000000..7df12f1
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+  $cfg["appversion"] = '1.7.1';
+?>
\ No newline at end of file
index 02f2f55..9787eaf 100644 (file)
@@ -3,43 +3,43 @@
  "short_name": "POT",
  "icons": [
   {
-   "src": "/static/img/favicon/android-icon-36x36.png",
+   "src": "/img/favicon/android-icon-36x36.png",
    "sizes": "36x36",
    "type": "image/png",
    "density": "0.75"
   },
   {
-   "src": "/static/img/favicon/android-icon-48x48.png",
+   "src": "/img/favicon/android-icon-48x48.png",
    "sizes": "48x48",
    "type": "image/png",
    "density": "1.0"
   },
   {
-   "src": "/static/img/favicon/android-icon-72x72.png",
+   "src": "/img/favicon/android-icon-72x72.png",
    "sizes": "72x72",
    "type": "image/png",
    "density": "1.5"
   },
   {
-   "src": "/static/img/favicon/android-icon-96x96.png",
+   "src": "/img/favicon/android-icon-96x96.png",
    "sizes": "96x96",
    "type": "image/png",
    "density": "2.0"
   },
   {
-   "src": "/static/img/favicon/android-icon-144x144.png",
+   "src": "/img/favicon/android-icon-144x144.png",
    "sizes": "144x144",
    "type": "image/png",
    "density": "3.0"
   },
   {
-   "src": "/static/img/favicon/android-icon-192x192.png",
+   "src": "/img/favicon/android-icon-192x192.png",
    "sizes": "192x192",
    "type": "image/png",
    "density": "4.0"
   },
   {
-    "src": "/static/img/favicon/android-icon-512x512.png",
+    "src": "/img/favicon/android-icon-512x512.png",
     "sizes": "512x512",
     "type": "image/png",
     "density": "4.0"
diff --git a/app/test.php b/app/test.php
deleted file mode 100644 (file)
index 2984c64..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php\r
-phpinfo();\r
-chmod("data/output/alicehartmann/pot", 0777);\r
-?>
\ No newline at end of file
index 67d8005..49da3ed 100644 (file)
                       <a class="inlinebtn" style="margin-top: 1px;margin-left: -26px;" href="javascript:dataform.cleanfield('recuperationhours');staffperiodweeks.checkdaytime();" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
                   </td>
                 </tr>
-                <tr style="border-top: 1px solid black;">
+                <!-- -->
+                <tr style="border-top: 1px solid black;{% if cmpcfg.sector != "HORESCA" %}display: none;{% endif %}">
                   <th class="labelcol">{{ lbl.partunempl }}</th>
                   <td colspan="2">
                     <input type="text" class="data_staffreportperioddays" data-column="partunempcomment" placeholder="{{ lbl.comment }}" data-id="" data-table="staffreportperioddays" id="partunempcomment" name="staffreportperioddays_partunempcomment" />
                       <a class="inlinebtn" style="margin-top: 1px;margin-left: -26px;" href="javascript:dataform.cleanfield('partunemplhours');staffperiodweeks.checkdaytime();" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
                   </th>
                 </tr>
+                <!--  -->
                 <tr style="border-top: 1px solid black;">
                   <th class="labelcol">{{ lbl.otherpaidhours }}</th>
                   <td colspan="2">
index 9c0ebb3..1e7735f 100644 (file)
@@ -232,9 +232,9 @@ let users ={
       delete flds["ident_users_id_users"];
     }
     
-    console.log("userdata",flds);
+    //console.log("userdata",flds);
     postData("db.php",flds).then(data2 => {
-      console.log("data returned",data2);
+      //console.log("data returned",data2);
       users.gettbldata();
       document.getElementById('dlg_users').style.display='none';
       dataform.formsaved(null); 
index d9bb72e..53b4299 100644 (file)
@@ -28,7 +28,9 @@
       <div class="bar">
         <a class="bar-item bodybtn" href="{{ abspath }}periods.html"><span class="icon icon-calendar" style="font-size: 24px;"></span>{{ lbl.refperiods }}</a>
         <a class="bar-item bodybtn" href="{{ abspath }}staff.html"><span class="icon icon-group" style="font-size: 24px;"></span>{{ lbl.staff }}</a>
-        <a class="bar-item bodybtn" href="{{ abspath }}timeclock.html"><span class="icon icon-star" style="font-size: 24px;"></span>{{ lbl.timetracker }}</a>
+        {% if cmpcfg.timetrackertype == 'pot' %}
+        <a class="bar-item bodybtn" href="{{ abspath }}timeclock.html"><span class="icon icon-clocktime" style="font-size: 24px;"></span>{{ lbl.timetracker }}</a>
+        {% endif %}
       </div>
   </div>
   <div class="card" style="margin-top: 10px;">
index f37858d..1ab5174 100644 (file)
@@ -25,7 +25,7 @@ let index = {
   },
   gettermsstatus: function(){
     postData("db.php",{"get":"termsstatus"}).then(data => {
-      console.log("termsstatus",data);
+      //console.log("termsstatus",data);
       if (data.result.data.terms != "1"){
         document.getElementById("dlg_terms").style.display = 'block';
       } 
index a3e9874..4741e7d 100644 (file)
@@ -93,7 +93,7 @@ document.addEventListener("DOMContentLoaded", function() {
 if ("serviceWorker" in navigator) {\r
   window.addEventListener("load", function() {\r
     navigator.serviceWorker\r
-      .register("/static/js/sw.js")\r
+      .register("/js/sw.js")\r
       .then(res => console.log("service worker registered"))\r
       .catch(err => console.log("service worker not registered", err))\r
   })\r
index 722b9ff..e220227 100644 (file)
@@ -147,9 +147,13 @@ cleanform2: function(frmname,choices){
     }
     if (frm[f].tagName == 'SELECT'){
       if (frm[f].multiple == true){
-        if (frm[f].classList.contains("choices__input")){
-          choices[frm[f].id].removeActiveItems();
+        //console.log("clean multiple",choices[frm[f].id]);
+        if (choices[frm[f].id]){
+          choices[frm[f].id].set([]);
         }
+        // if (frm[f].classList.contains("choices__input")){
+        //   choices[frm[f].id].removeActiveItems();
+        // }
       } else {
         frm[f].value = "";
       }
@@ -204,6 +208,14 @@ fillformbydataclass2: function(dataclass,choices,data,onblur){
             frm[f].value=data[frm[f].id];
           }
         }
+        if (frm[f].tagName == 'TEXTAREA'){
+          if (frm[f].classList.contains("richeditarea")){
+            choices[frm[f].id].setContents(data[frm[f].id]);
+            //tinymce.get(frm[f].id).setContent("");
+          } else {
+            frm[f].innerHTML = data[frm[f].id];
+          } 
+        }
       } 
     }
   }
@@ -245,9 +257,9 @@ savefielddata: function(obj,objdata,callback){
   fdata["save"] = "field";
   fdata["schemata"] = schemata;
   fdata["value"] = objdata;
-  console.log("savefielddata",fdata);
-  if (callback){}
-  //postData("db.php",fdata).then(data => { if (callback){callback(data);}});
+  //console.log("savefielddata",fdata);
+  //if (callback){}
+  postData("db.php",fdata).then(data => { if (callback){callback(data);}});
 },
 saveschemafield: function(obj,schema){
   fdata = obj.dataset;
index 9e7cf5d..efbf691 100644 (file)
@@ -1,6 +1,7 @@
-var api = location.origin + '/';
+var api = location.origin + '/potapp/';
+
 // var api2 = location.origin + '/';
-// console.log("API 2",api2);
+//console.log("API 2",api);
 var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
 
 async function postData(url = '', data = {}) {
index 03b0271..e3c48df 100644 (file)
@@ -11,7 +11,7 @@ let periodvalidation = {
     }
     if (prd[0]){
 
-    console.log("perioddata",prd[0]);
+    //console.log("perioddata",prd[0]);
     if (prd[0].isvalidated != null){
       // console.log("invalidate show");
       document.getElementById("btn_invalidateperiod").style.display = 'inline';
index 67dcde1..52fc225 100644 (file)
@@ -91,7 +91,7 @@ let reportperiod ={
         /*{% endif %} */
         {title: '<span style="font-size: 8pt;">{{ lbl.avgweek_short }}</span>',width: 60, field:"avgtotalweekhours",hozAlign:"right",headerSort: false,formatter:periodAVGFormatter},
         {title: '<span style="font-size: 9pt;">{{ lbl.validated }}</span>',width: 40, field:"isvalidated",hozAlign:"center",headerSort: false,formatter:"tickCross", formatterParams:{allowEmpty:true,allowTruthy: false},headerVertical:true},
-        /*{% if session.usergorup == "admin" %}*/
+        /*{% if session.usergroup == "admin" %}*/
         {title: '<span style="font-size: 9pt;">{{ lbl.maxdays }}</span>',width: 60, field:"maxdays",hozAlign:"center",headerSort: false}
         /*{% endif %}*/
       ] 
index 7b74551..9cf98e1 100644 (file)
@@ -19,8 +19,7 @@ let staffperiodweeks = {
   initform: function(){
     staffperiodweeks.choices["id_workplan"] = new SlimSelect({
       select: "#id_workplan",
-      showSearch: false,
-      
+      showSearch: false
     });
     // staffperiodweeks.getvacancy();
     // staffperiodweeks.getrecuperation();
@@ -83,11 +82,12 @@ let staffperiodweeks = {
         {title: '<span style="font-size: 8pt;">{{ lbl.partunempl }}</span>',width:90, field:"partunemplhours",hozAlign:"right",headerSort: false},
         { title: "{{ lbl.recuperation_short }}",field: "recuperationhours",hozAlign:"center",headerSort: false,formatter:recupformatter,bottomCalc:staffperiodweeks.setweekrecuperationhours},
         { title: "{{ lbl.total|raw  }}",field: "dayhours",hozAlign:"center",headerSort: false,formatter:totalFormatter,bottomCalc:staffperiodweeks.setweektotalhours,bottomCalcFormatter:"html"},
-        { title: "{{ lbl.diffcontract|raw  }}",field:"diffhours",hozAlign:"center",formatter:nullFormatter,headerSort:false,bottomCalc:staffperiodweeks.setweekdiffhours},
-        { title: "{{ lbl.avgweek_short }}",field: "avgweekhours",hozAlign:"center",headerSort: false,formatter:nullFormatter,bottomCalc:staffperiodweeks.setavgweekhours},
-        { title: "{{ lbl.resttime }}",field: "freehoursafter",hozAlign:"center",formatter:freetimeFormatter,headerSort: false},
-        { title: "{{ lbl.timetracks }}",field:"trackedtime",hozAlign:"center",formatter:timetrackFormatter,headerSort: false,bottomCalc:staffperiodweeks.settotaltrackhours},
-        { title: "{{ lbl.trackdiff }}",field:"periodtrackdiff",formatter:nullFormatter,headerSort:false,bottomCalc:staffperiodweeks.settrackeddiffhours}
+        // { title: '<span style="font-size: 8pt;">{{ lbl.diffcontract|raw  }}</span>',field:"diffhours",hozAlign:"center",formatter:nullFormatter,headerSort:false,bottomCalc:staffperiodweeks.setweekdiffhours},
+        { title: '<span style="font-size: 8pt;">{{ lbl.avgweek_short }}</span>',field: "avgweekhours",hozAlign:"center",headerSort: false,formatter:nullFormatter,bottomCalc:staffperiodweeks.setavgweekhours},
+        { title: '<span style="font-size: 8pt;">{{ lbl.resttime }}</span>',field: "freehoursafter",hozAlign:"center",formatter:freetimeFormatter,headerSort: false},
+        { title: '<span style="font-size: 8pt;">{{ lbl.timetracks }}</span>',field:"trackedtime",hozAlign:"center",formatter:timetrackFormatter,headerSort: false,bottomCalc:staffperiodweeks.settotaltrackhours,tooltip:true},
+        { title: '<span style="font-size: 8pt;">{{ lbl.trackdiff }}</span>',field:"periodtrackdiff",formatter:nullFormatter,headerSort:false,bottomCalc:staffperiodweeks.settrackeddiffhours},
+        { title: '<span style="font-size: 8pt;">Diff Woche</span>',field:"trackeddiff",formatter:nullFormatter,headerSort:false,bottomCalc:staffperiodweeks.setweektrackdiff}
       ]
   });
   staffperiodweeks.tblfooter = new Tabulator("#tbl_staffperiodfooter", {
@@ -108,8 +108,10 @@ let staffperiodweeks = {
       {title: '<span style="font-size: 8pt;">{{ lbl.statementtransfered3 }}</span>',width: 80, field:"transferedhours",hozAlign:"right",headerSort: false},
       {title: '<span style="font-size: 9pt;">{{ lbl.supphourspayed2 }}</span>',width: 80, field:"payedhours",hozAlign:"right",headerSort: false} ,
       {title: '<span style="font-size: 8pt;">{{ lbl.finalstatementpot2 }}</span>',width: 90, field:"hoursdiff",hozAlign:"right",headerSort: false},
+      /*{% if cmpcfg.sector == "HORESCA" %} */
       {title: '<span style="font-size: 9pt;">{{ lbl.supp44h3 }}</span>',width: 70, field:"suppvacancy44hours",hozAlign:"right",headerSort: false},
       {title: '<span style="font-size: 9pt;">{{ lbl.suppsunwork2 }}</span>',width: 70, field:"suppvacancysunwork",hozAlign:"right",headerSort: false},
+      /*{% endif %} */
       {title: '<span style="font-size: 8pt;">{{ lbl.avgweek_short2 }}</span>',width: 100, field:"avgtotalweekhours",hozAlign:"right",headerSort: false,formatter:periodAVGFormatter},
       {title: '<span style="font-size: 9pt;">{{ lbl.validated2 }}</span>',width: 60, field:"isvalidated",hozAlign:"center",headerSort: false,formatter:"tickCross", formatterParams:{allowEmpty:true,allowTruthy: false}}
       
@@ -269,6 +271,10 @@ let staffperiodweeks = {
     if (staffperiodweeks.weekdata && staffperiodweeks.weekdata[data[0].weekstart]) {return staffperiodweeks.weekdata[data[0].weekstart].periodtrackdiff;}
     return "";
   },
+  setweektrackdiff: function(values, data, calcParams){
+    if (staffperiodweeks.weekdata && staffperiodweeks.weekdata[data[0].weekstart]) {return staffperiodweeks.weekdata[data[0].weekstart].trackeddiff;}
+    return "";
+  },
   setavgweekhours: function(values, data, calcParams){
     if (staffperiodweeks.weekdata && staffperiodweeks.weekdata[data[0].weekstart]) {return staffperiodweeks.weekdata[data[0].weekstart].avgtotalhours;}
     return "";
@@ -296,7 +302,7 @@ let staffperiodweeks = {
       // document.getElementById("vacextracomment").value='';
       // document.getElementById("recupcomment").value='';
       // document.getElementById("partunempcomment").value='';
-      console.log("CDAY",staffperiodweeks.currentday);
+      //("CDAY",staffperiodweeks.currentday);
       dataform.fillformbydataclass2("staffreportperioddays",staffperiodweeks.choices,staffperiodweeks.currentday);
       document.getElementById("display_date").innerHTML=moment(staffperiodweeks.currentday.daydate).format("dddd , DD.MM.YYYY");
       //document.getElementById("display_staffname").innerHTML=selrp[0].staffname;
@@ -329,7 +335,7 @@ let staffperiodweeks = {
     delete wpdata.staffreportperioddays_dayhours;
     wpdata["fn"] ="saveform";wpdata["table"]="staffreportperioddays";
     wpdata["schemata"] = schemata;
-    console.log(wpdata);
+    //console.log(wpdata);
     showdataloaddlg('','<div class="xxlarge">{{ lbl.waitmsg }}</div>');
     postData("db.php",wpdata).then(data => {
       let sel = staffperiodweeks.tbl.getSelectedData();
@@ -353,7 +359,7 @@ let staffperiodweeks = {
         }
       }
       flds["timetrackdata"]=trdata;
-      console.log(trdata);
+      //console.log(trdata);
       postData("db.php",flds).then(data => {
       //staffperiodweeks.gettbldata();
       //document.getElementById('dlg_stafftimetracker').style.display='none';
@@ -371,7 +377,7 @@ let staffperiodweeks = {
   updateWeekHours: function(){
     let selrp = staffperiodweeks.parenttbl.getSelectedData();
     postData("db.php",{"fn":"update_staff_in_period","schemata":schemata,"id_period":selrp[0].id_reportperiod,"id_staff":selrp[0].id_staff}).then( data => {
-      console.log(data);
+      //console.log(data);
       //staffperiodweeks.gettbldata();
       staffperiodweeks.tblfooter.setData([data.result["0"]]);
       dataform.formsaved({});
@@ -514,9 +520,9 @@ let staffperiodweeks = {
   checkdaytime: function(obj){
     if (obj){
       timecalc.validateTime(obj);
-      console.log("checkdaytime",obj);
+      //console.log("checkdaytime",obj);
     } else {
-      console.log("noobj");
+      //console.log("noobj");
     }
     
     let wktime = 0;
@@ -655,7 +661,7 @@ let staffperiodweeks = {
   edittimetracker: function(){
     staffperiodweeks.inittimetracktable();
     let sel = staffperiodweeks.tbl.getSelectedData();
-    if (sel.length > 0 && sel[0].daydate < staffperiodweeks.today){
+    if (sel.length >= 0 && sel[0].daydate <= staffperiodweeks.today){
       document.getElementById("btn_ttadd").style.display ="block";
       document.getElementById("btn_ttremove").style.display ="block";
       staffperiodweeks.selectedid = sel[0].id;
@@ -686,7 +692,7 @@ let staffperiodweeks = {
     values.forEach(function(value){
         calc += timecalc.TimeToMinutes(value);
     });
-    if ((dhrs > 360)  && (calc > 30) && (pps == false)){
+    if ((calc >= 360) && (pps == false)){
       let tpsval = '00:30';
       let calcwp = calc-30;
       if (tps > 0){
@@ -797,3 +803,10 @@ let timetrackFormatter = function(cell,formatterParams){
   }
   return cell.getValue();
 }
+
+// let tooltipworkhours = function(cell){
+//   //cell - cell component
+   
+//   //function should return a string for the tooltip of false to hide the tooltip
+//   return  cell._cell.row.data.dspworkdata + "<br/>Pause:<br/>" + cell._cell.row.data.dsppausedata; //return cells "field - value";
+// }
index b3e6d04..ac1665f 100644 (file)
@@ -5,6 +5,6 @@
 <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.paste(); return false;"><span class="icon icon-paste" id="spwpasteval"></span>{{ lbl.paste }}</button>
 <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.clean(); return false;"><span class="icon icon-erase"></span>{{ lbl.clean }}</button>
 <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.replacedlg(); return false;"><span class="icon icon-replace"></span>{{ lbl.changetemplate }}</button>
-<button class="bar-item toolbarbtn right" onclick="staffperiodweeks.viewonlyweeks(); return false;"><span class="icon icon-shrink"></span>{{ lbl.viewonlyweeks }}</button>
-<button class="bar-item toolbarbtn right" onclick="staffperiodweeks.viewdays(); return false;"><span class="icon icon-expand"></span>{{ lbl.viewdays }}</button>
+<!-- <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.viewonlyweeks(); return false;"><span class="icon icon-shrink"></span>{{ lbl.viewonlyweeks }}</button> -->
+<!-- <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.viewdays(); return false;"><span class="icon icon-expand"></span>{{ lbl.viewdays }}</button> -->
 <span>
index 42d7b3c..c92f4b4 100644 (file)
@@ -63,10 +63,10 @@ savepwd: function(){
   let sel = [];\r
   if (profile.reftbl){\r
     sel =profile.reftbl.getSelectedData();\r
-    console.log("has reftbl!");\r
+    //console.log("has reftbl!");\r
   } else {\r
     sel.push({id:"{{ session.id }}"});\r
-    console.log("set own profile pwd!");\r
+    //console.log("set own profile pwd!");\r
   }\r
   if (sel[0] && valp==true){\r
     postData("db.php",{"fn":"savenewpwd","pwd":document.getElementById("newpwd1").value,"iduser":sel[0].id}).then(data => {\r
index 0e5b16f..9f27c47 100644 (file)
               <select class="select data_staff" id="timetrackers" data-selected=""  data-column="timetrackers"  data-table="staff" data-id="" multiple value="" name="staff_timetrackers"></select>
             </div>
           </div>
+          <div class="row">
+            <div class="half">
+            <div class="container">
+              <div class="cell" style="width: 78px;">
+                <label for="staff_timetrackers" class="label">&nbsp;</label>
+                <div>{{lbl.monday}}</div>
+              </div>
+              <div class="cell" style="width: 86px;">
+                <label for="staff_timetrackers" class="label">Min</label>
+                <input class="timefield data_staff" data-column="mon_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="mon_mintime" name="staff_mon_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('mon_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+              <div class="cell" style="width: 86px;">
+                <label for="staff_timetrackers" class="label">Max</label>
+                <input class="timefield data_staff" data-column="mon_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="mon_maxtime" name="staff_mon_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('mon_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+            </div>
+            <div class="container">
+              <div class="cell" style="width: 78px;">
           
+                <div>{{lbl.tuesday}}</div>
+              </div>
+              <div class="cell" style="width: 86px;">
+               
+                <input class="timefield data_staff" data-column="tue_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="tue_mintime" name="staff_tue_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('tue_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+              <div class="cell" style="width: 86px;">
+             
+                <input class="timefield data_staff" data-column="tue_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="tue_maxtime" name="staff_tue_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('tue_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+            </div>
+            <div class="container">
+              <div class="cell" style="width: 78px;">
+             
+                <div>{{lbl.wednesday}}</div>
+              </div>
+              <div class="cell" style="width: 86px;">
+         
+                <input class="timefield data_staff" data-column="wed_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="wed_mintime" name="staff_wed_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('wed_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+              <div class="cell" style="width: 86px;">
+            
+                <input class="timefield data_staff" data-column="wed_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="wed_maxtime" name="staff_wed_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('wed_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+            </div>
+            <div class="container">
+              <div class="cell" style="width: 78px;">
+               
+                <div>{{lbl.thursday}}</div>
+              </div>
+              <div class="cell" style="width: 86px;">
+          
+                <input class="timefield data_staff" data-column="thu_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="thu_mintime" name="staff_thu_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('thu_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+              <div class="cell" style="width: 86px;">
+            
+                <input class="timefield data_staff" data-column="thu_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="thu_maxtime" name="staff_thu_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('thu_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+            </div>
+            <div class="container">
+              <div class="cell" style="width: 78px;">
+               
+                <div>{{lbl.friday}}</div>
+              </div>
+              <div class="cell" style="width: 86px;">
+          
+                <input class="timefield data_staff" data-column="fri_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="fri_mintime" name="staff_fri_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('fri_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+              <div class="cell" style="width: 86px;">
+            
+                <input class="timefield data_staff" data-column="fri_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="fri_maxtime" name="staff_fri_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                <a class="inlinebtn" href="javascript:dataform.cleanfield('fri_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+              </div>
+            </div>
+            </div>
+            <div class="half">
+              <div class="container">
+                <div class="cell" style="width: 78px;">
+                  <label for="staff_timetrackers" class="label">&nbsp;</label>
+                  <div>{{lbl.saturday}}</div>
+                </div>
+                <div class="cell" style="width: 86px;">
+                  <label for="staff_timetrackers" class="label">Min</label>
+                  <input class="timefield data_staff" data-column="sat_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="sat_mintime" name="staff_sat_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                  <a class="inlinebtn" href="javascript:dataform.cleanfield('sat_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+                </div>
+                <div class="cell" style="width: 86px;">
+                  <label for="staff_timetrackers" class="label">Max</label>
+                  <input class="timefield data_staff" data-column="sat_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="sat_maxtime" name="staff_sat_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                  <a class="inlinebtn" href="javascript:dataform.cleanfield('sat_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+                </div>
+              </div>
+              <div class="container">
+                <div class="cell" style="width: 78px;">
+            
+                  <div>{{lbl.sunday}}</div>
+                </div>
+                <div class="cell" style="width: 86px;">
+                 
+                  <input class="timefield data_staff" data-column="sun_mintime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="sun_mintime" name="staff_sun_mintime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                  <a class="inlinebtn" href="javascript:dataform.cleanfield('sun_mintime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+                </div>
+                <div class="cell" style="width: 86px;">
+               
+                  <input class="timefield data_staff" data-column="sun_maxtime" data-id="" style="display: inline;float: left;" placeholder="00:00"  data-table="staff" id="sun_maxtime" name="staff_sun_maxtime" onblur="timecalc.validateTime(this);dataform.savefield(this,null);return false;" type="text" value="">
+                  <a class="inlinebtn" href="javascript:dataform.cleanfield('sun_maxtime');" ><span class="icon icon-remove" style="font-size: 10px;"></span></a>
+                </div>
+              </div>
+            </div>
+          </div>
         </div>
       </div>
     </div>
index ffff059..d1ebd71 100644 (file)
@@ -74,7 +74,10 @@ let staff ={
       select: "#timetrackers",
       showSearch: false,
       afterClose: function(){
-        dataform.savefielddata(document.getElementById('timetrackers'),staff.choices["timetrackers"].selected(),null);
+        var ttd = staff.choices["timetrackers"].selected()
+        //var attd = ttd.split(",");
+        //console.log(ttd);
+        dataform.savefielddata(document.getElementById('timetrackers'),JSON.stringify(ttd),null);
       }
     });
     staff.choices["timetrackerlang"] = new SlimSelect({
@@ -173,7 +176,7 @@ let staff ={
   },
   edit: function(){
     let udata = staff.tbl.getSelectedData();
-    console.log("Staff Details",udata[0]);
+    //console.log("Staff Details",udata[0]);
     if (udata[0]) {
       
       //console.log("selstaff",udata[0]); 
@@ -190,9 +193,9 @@ let staff ={
       staff.current_id = udata[0].id;
       dataform.cleanform2("staff",staff.choices);
       postData("db.php",{ "get":"staff","schemata":schemata,"id":udata[0].id}).then(data => {
-        console.log("staffdata",data.result.data);
+        //console.log("staffdata",data.result.data);
         if (data.result.data["istimetrackenabled"] == true){
-          data.result.data["istimetrackenabled"] = "1"
+          data.result.data["istimetrackenabled"] = "1";
         }
         dataform.fillformbydataclass2("staff",staff.choices,data.result.data,'dataform.savefield(this,null);');
         staffcontract.gettbldata();
@@ -273,21 +276,21 @@ let staff ={
   cleanfingerprints: function(){
     showdataloaddlg('','<div class="xxlarge">{{ lbl.waitmsg }}</div>');
     postData('db.php',{"cl":"TimeTracker","fn":"send_cleanfp","schema":schemata,"id_staff":staff.current_id}).then(data => {
-      console.log("Clean returns",data);
+      //console.log("Clean returns",data);
       closedataloaddlg();
     }).catch(err => {
       closedataloaddlg();
-      console.log("Clean err returns",data);
+      //console.log("Clean err returns",data);
     });
   },
   sendtotracker: function(){
     showdataloaddlg('','<div class="xxlarge">{{ lbl.waitmsg }}</div>');
     postData('db.php',{"cl":"TimeTracker","fn":"send_setstaff","schema":schemata,"id_staff":staff.current_id}).then(data => {
-      console.log("SetStaff returns",data);
+      //console.log("SetStaff returns",data);
       closedataloaddlg();
     }).catch(err => {
       closedataloaddlg();
-      console.log("SetStaff err returns",data);
+      //console.log("SetStaff err returns",data);
     });
     //alert("Noch nicht aktiviert!\nPas activĂ© pour l'instant!")
   }
index b270d5c..771118c 100644 (file)
@@ -33,10 +33,15 @@ let staffperiods = {
         {title: '<span style="font-size: 9pt;">{{ lbl.statementtransfered2 }}</span>', field:"transferedhours",hozAlign:"right",headerSort: false},
         {title: '<span style="font-size: 9pt;">{{ lbl.supphourspayed2 }}</span>', field:"payedhours",hozAlign:"right",headerSort: false,headerVertical:true} ,
         {title: '<span style="font-size: 9pt;">{{ lbl.finalstatementpot }}</span>', field:"hoursdiff",headerSort: false,hozAlign:"right"},
+        /*{% if cmpcfg.sector == "HORESCA" %} */
         {title: '<span style="font-size: 9pt;">{{ lbl.supp44h2 }}</span>', field:"suppvacancy44hours",hozAlign:"right",headerSort: false,headerVertical:true},
         {title: '<span style="font-size: 9pt;">{{ lbl.suppsunwork }}</span>', field:"suppvacancysunwork",hozAlign:"right",headerSort: false,headerVertical:true},
+        /*{% endif %}*/
         {title: '<span style="font-size: 9pt;">{{ lbl.avgweek_short }}</span>', field:"avgtotalweekhours",hozAlign:"right",headerSort: false,formatter:periodAVGFormatter},
-        {title: '<span style="font-size: 9pt;">{{ lbl.validated }}</span>', field:"isvalidated",hozAlign:"center",headerSort: false,formatter:"tickCross", formatterParams:{allowEmpty:true,allowTruthy: false}}
+        {title: '<span style="font-size: 9pt;">{{ lbl.validated }}</span>', field:"isvalidated",hozAlign:"center",headerSort: false,formatter:"tickCross", formatterParams:{allowEmpty:true,allowTruthy: false}},
+        /*{% if session.usergroup == "admin" %}*/
+        {title: '<span style="font-size: 9pt;">{{ lbl.maxdays }}</span>',width: 60, field:"maxdays",hozAlign:"center",headerSort: false}
+        /*{% endif %}*/
           ]
     });
   },
index 9e8e985..a721856 100644 (file)
@@ -75,7 +75,7 @@ let staffvacancy = {
     
     flds["fn"] ="saveform";flds["table"]="staffvacancyyear";
     flds["schemata"]=schemata;
-    console.log("staffvacancyyear",flds);
+    //console.log("staffvacancyyear",flds);
     postData("db.php",flds).then(data => {
       staffvacancy.gettblyeardata();
     document.getElementById('dlg_staffvacancyyear').style.display='none';
index 7c7f28c..2b96acc 100644 (file)
@@ -25,26 +25,73 @@ let timeclock = {
       //   workplans.edit();\r
       // },\r
       rowContext:function(e, row){e.preventDefault(); },\r
-      // groupBy:["weeknum"],\r
-      // groupStartOpen:[true],\r
-      // groupClosedShowCalcs:true,\r
-      // groupHeader:[\r
-      //   function(value, count, data){ \r
-      //     return "Semaine " + value;\r
-      //   },\r
-      // ],\r
+      groupBy:["groupname"],\r
+      groupStartOpen:[true],\r
+      groupHeader:[function(value, count, data){ return ((value)?value:"");}],\r
+      cellDblClick:function(e, cell){\r
+        //e - the click event object\r
+        //cell - cell component\r
+      },\r
+        //groupClosedShowCalcs:true,\r
+        // groupHeader:[\r
+        //   function(value, count, data){ \r
+        //      value;\r
+        //    },\r
+        // ],\r
       columns: [\r
       { title: "{{ lbl.staffname }}",field: "staffname",headerFilter:"input"},\r
-      { title: "{{ lbl.monday }}<br/><span id=\"mondate\">DD.MM.YYYY</span>",field: "montime"},\r
-      { title: "{{ lbl.tuesday }}<br/><span id=\"tuedate\">DD.MM.YYYY</span>",field: "tuetime"},\r
-      { title: "{{ lbl.wednesday }}<br/><span id=\"weddate\">DD.MM.YYYY</span>",field: "wedtime" }, \r
-      { title: "{{ lbl.thursday }}<br/><span id=\"thudate\">DD.MM.YYYY</span>",field: "thutime"}, \r
-      { title: "{{ lbl.friday }}<br/><span id=\"fridate\">DD.MM.YYYY</span>",field: "fritime" },  \r
-      { title: "{{ lbl.saturday }}<br/><span id=\"satdate\">DD.MM.YYYY</span>",field: "sattime" }, \r
-      { title: "{{ lbl.sunday }}<br/><span id=\"sundate\">DD.MM.YYYY</span>",field: "suntime" },\r
-      { title: "{{ lbl.weektotal }}",field: "weeksum"},\r
-      { title: "{{ lbl.monthdiff }}",field: "monthdiff"},\r
-      { title: "{{ lbl.perioddiff }}",field: "perioddiff"}\r
+      { title: "<span id=\"mondate\">DD.MM.YYYY</span>",\r
+        columns: [\r
+          {title:'<span class="icon icon-timeentry"></span>',field:"monentry",headerSort: false,width:60},\r
+          {title:'<span class="icon icon-timeexit"></span>',field:"monexit",headerSort: false,width:60},\r
+          {title:'<span class="icon icon-sum"></span>',field:"montime",headerSort: false,width:60,formatter:boldFormatter},\r
+        ]\r
+      },\r
+      { title: "<span id=\"tuedate\">DD.MM.YYYY</span>",\r
+      columns: [\r
+        {title:'<span class="icon icon-timeentry"></span>',field:"tueentry",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-timeexit"></span>',field:"tueexit",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-sum"></span>',field:"tuetime",headerSort: false,width:60,formatter:boldFormatter},\r
+      ]\r
+      },\r
+      { title: "<span id=\"weddate\">DD.MM.YYYY</span>",\r
+      columns: [\r
+        {title:'<span class="icon icon-timeentry"></span>',field:"wedentry",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-timeexit"></span>',field:"wedexit",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-sum"></span>',field:"wedtime",headerSort: false,width:60,formatter:boldFormatter},\r
+      ]\r
+      }, \r
+      { title: "<span id=\"thudate\">DD.MM.YYYY</span>",\r
+      columns: [\r
+        {title:'<span class="icon icon-timeentry"></span>',field:"thuentry",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-timeexit"></span>',field:"thuexit",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-sum"></span>',field:"thutime",headerSort: false,width:60,formatter:boldFormatter},\r
+      ]\r
+    }, \r
+      { title: "<span id=\"fridate\">DD.MM.YYYY</span>",\r
+      columns: [\r
+        {title:'<span class="icon icon-timeentry"></span>',field:"frientry",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-timeexit"></span>',field:"friexit",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-sum"></span>',field:"fritime",headerSort: false,width:60,formatter:boldFormatter},\r
+      ]\r
+    },  \r
+      { title: "<span id=\"satdate\">DD.MM.YYYY</span>",\r
+      columns: [\r
+        {title:'<span class="icon icon-timeentry"></span>',field:"satentry",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-timeexit"></span>',field:"satexit",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-sum"></span>',field:"sattime",headerSort: false,width:60,formatter:boldFormatter},\r
+      ]\r
+    }, \r
+      { title: "<span id=\"sundate\">DD.MM.YYYY</span>",\r
+      columns: [\r
+        {title:'<span class="icon icon-timeentry"></span>',field:"sunentry",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-timeexit"></span>',field:"sunexit",headerSort: false,width:60},\r
+        {title:'<span class="icon icon-sum"></span>',field:"suntime",headerSort: false,width:60,formatter:boldFormatter},\r
+      ]\r
+    },\r
+      { title: "{{ lbl.weektotal }}",field: "weeksum",headerSort: false,width:100,formatter:boldFormatter},\r
+      // { title: "{{ lbl.monthdiff }}",field: "monthdiff",headerSort: false,width:100},\r
+      // { title: "{{ lbl.perioddiff }}",field: "perioddiff",headerSort: false,width:100}\r
       ]\r
   });\r
     document.getElementById('weekselect')._flatpickr.setDate(moment().format('YYYY-MM-DD'));\r
@@ -54,12 +101,12 @@ let timeclock = {
     let wsobj = document.getElementById('weekselect').value;\r
     postData("db.php",{"cl":"TimeTracker","fn":"getWeekStamps","schema":schemata,"date":wsobj}).then(data => {\r
       let aa = ["mon","tue","wed","thu","fri","sat","sun"];\r
-      let mondate = moment(wsobj).startOf('week').format('YYYY-MM-DD');\r
+      let mondate = moment(wsobj).startOf('week').format('ddd, YYYY-MM-DD');\r
       for (var d=0;d<aa.length;d++){\r
-        upddate = moment(mondate).add(d,'days').format('DD.MM.YYYY');\r
+        upddate = moment(mondate).add(d,'days').format('ddd DD.MM.YYYY');\r
         document.getElementById(aa[d] + "date").innerHTML=upddate;\r
       }\r
-      console.log(data);\r
+      //console.log(data);\r
       timeclock.tbl.setData(data.result.data);\r
     });\r
   },\r
@@ -86,5 +133,7 @@ let timeclock = {
 \r
 let boldFormatter = function(cell, formatterParams){\r
   cell.getElement().style.fontWeight="bold";\r
+  cell.getElement().style.borderRight="2px solid black";\r
   return cell.getValue();\r
-};
\ No newline at end of file
+};\r
+\r
index a1e0ce1..a34ff16 100644 (file)
@@ -196,7 +196,7 @@ let workplans ={
     wps["id"] = wpdatanew["ident_id"];
     delete wpdatanew["ident_id"];
     wps["workplanday"] = wpdatanew;
-    console.log(wps);
+    //console.log(wps);
     postData("db.php",wps).then(data => {
       document.getElementById('dlg_workplanday').style.display='none'; 
       workplans.gettbldata();
index 74f3b0d..abdbb1a 100644 (file)
@@ -10,11 +10,11 @@ find . -type f -printf "%p|%s\n" | grep -v -e "\/data\/output\/" | grep -v -e "\
 ssh -p ${SSHPORT} ${SSHUSER}@${SSHHOST} 'cd '${REMOTEAPPFOLDER}' && find . -type f -printf "%p|%s\n" | sort' > ${TMPDIR}/sourcefiles.remote.txt
 
 echo "To update:"
-UPDFILES=`diff -y -W 200 ${TMPDIR}/sourcefiles.local.txt ${TMPDIR}/sourcefiles.remote.txt | grep " |" | awk '{ print $1 }' | cut -d"|" -f 1 | grep -v ".htaccess" | grep -v "dksconfig" | grep -v ".git" | grep -v "/media/"`
+UPDFILES=`diff -y -W 200 ${TMPDIR}/sourcefiles.local.txt ${TMPDIR}/sourcefiles.remote.txt | grep " |" | awk '{ print $1 }' | cut -d"|" -f 1 | grep -v ".htaccess" | grep -v "/config.php" | grep -v ".git" | grep -v "/media/"`
 echo ${UPDFILES}
 echo ""
 echo "new files:"
-INSFILES=`diff -y -W 200 ${TMPDIR}/sourcefiles.local.txt ${TMPDIR}/sourcefiles.remote.txt | grep " <" | awk '{ print $1 }' | cut -d"|" -f 1 | grep -v ".htaccess" | grep -v "dksconfig" | grep -v ".git" | grep -v "/media/"`
+INSFILES=`diff -y -W 200 ${TMPDIR}/sourcefiles.local.txt ${TMPDIR}/sourcefiles.remote.txt | grep " <" | awk '{ print $1 }' | cut -d"|" -f 1 | grep -v ".htaccess" | grep -v "/config.php" | grep -v ".git" | grep -v "/media/"`
 echo ${INSFILES}
 echo ""
 echo "only online or OLD files:"