From 736fe7bc8cd894d75c6b327349c1659325c1a763 Mon Sep 17 00:00:00 2001 From: "kilian (ksmachome)" Date: Sun, 29 Dec 2019 08:29:49 +0100 Subject: [PATCH] v20191228 --- .htaccess | 17 + backoffice/.htaccess | 9 + backoffice/api/db.cgi | 108 + backoffice/api/file.cgi | 136 + backoffice/api/index.cgi | 177 + backoffice/api/lib/dksconfig.pm | 28 + backoffice/api/lib/dksdb.pm | 390 + backoffice/api/lib/dkssavefile.pm | 49 + backoffice/api/lib/sendemail.pm | 127 + backoffice/api/lib/session.pm | 240 + backoffice/api/sendEmail | 2235 ++ backoffice/api/tmp/sql.log | 20 + backoffice/api/upload.cgi | 242 + backoffice/css/module.css | 8 + backoffice/css/w3pro.css | 379 + backoffice/data/.htaccess | 5 + backoffice/data/company/.htaccess | 5 + backoffice/data/schemata/.htaccess | 5 + .../data/schemata/defaultcompany.schema.sql | 1193 + backoffice/img/bg1.jpg | Bin 0 -> 135161 bytes .../img/favicon/android-icon-144x144.png | Bin 0 -> 12179 bytes .../img/favicon/android-icon-192x192.png | Bin 0 -> 16669 bytes backoffice/img/favicon/android-icon-36x36.png | Bin 0 -> 2527 bytes backoffice/img/favicon/android-icon-48x48.png | Bin 0 -> 3489 bytes backoffice/img/favicon/android-icon-72x72.png | Bin 0 -> 5250 bytes backoffice/img/favicon/android-icon-96x96.png | Bin 0 -> 7086 bytes backoffice/img/favicon/apple-icon-114x114.png | Bin 0 -> 8487 bytes backoffice/img/favicon/apple-icon-120x120.png | Bin 0 -> 9134 bytes backoffice/img/favicon/apple-icon-144x144.png | Bin 0 -> 12179 bytes backoffice/img/favicon/apple-icon-152x152.png | Bin 0 -> 13278 bytes backoffice/img/favicon/apple-icon-180x180.png | Bin 0 -> 17376 bytes backoffice/img/favicon/apple-icon-57x57.png | Bin 0 -> 4122 bytes backoffice/img/favicon/apple-icon-60x60.png | Bin 0 -> 4312 bytes backoffice/img/favicon/apple-icon-72x72.png | Bin 0 -> 5250 bytes backoffice/img/favicon/apple-icon-76x76.png | Bin 0 -> 5550 bytes .../img/favicon/apple-icon-precomposed.png | Bin 0 -> 17158 bytes backoffice/img/favicon/apple-icon.png | Bin 0 -> 17158 bytes backoffice/img/favicon/browserconfig.xml | 2 + backoffice/img/favicon/favicon-16x16.png | Bin 0 -> 1251 bytes backoffice/img/favicon/favicon-32x32.png | Bin 0 -> 2246 bytes backoffice/img/favicon/favicon-96x96.png | Bin 0 -> 7086 bytes backoffice/img/favicon/favicon.ico | Bin 0 -> 1150 bytes backoffice/img/favicon/manifest.json | 41 + backoffice/img/favicon/ms-icon-144x144.png | Bin 0 -> 12179 bytes backoffice/img/favicon/ms-icon-150x150.png | Bin 0 -> 12985 bytes backoffice/img/favicon/ms-icon-310x310.png | Bin 0 -> 40744 bytes backoffice/img/favicon/ms-icon-70x70.png | Bin 0 -> 5051 bytes backoffice/img/hourtrax.png | Bin 0 -> 44729 bytes backoffice/img/icons/Agreement_01.svg | 1 + backoffice/img/icons/Bill.svg | 1 + backoffice/img/icons/Document_Save.svg | 1 + backoffice/img/icons/Floppy.svg | 1 + backoffice/img/icons/Folder_Delete_01.svg | 1 + backoffice/img/icons/Folder_Find_01.svg | 1 + backoffice/img/icons/Save.svg | 1 + backoffice/img/icons/access.svg | 1 + backoffice/img/icons/access_white.svg | 5 + backoffice/img/icons/address.svg | 3 + backoffice/img/icons/address_white.svg | 3 + backoffice/img/icons/apps.svg | 3 + backoffice/img/icons/apps_white.svg | 3 + backoffice/img/icons/archive.svg | 1 + backoffice/img/icons/archive_white.svg | 5 + backoffice/img/icons/calendar.svg | 3 + backoffice/img/icons/calendar_white.svg | 3 + backoffice/img/icons/club.svg | 3 + backoffice/img/icons/club_white.svg | 3 + backoffice/img/icons/clubs.svg | 3 + backoffice/img/icons/clubs_white.svg | 3 + backoffice/img/icons/code.svg | 1 + backoffice/img/icons/company.svg | 1 + backoffice/img/icons/company_white.svg | 5 + backoffice/img/icons/cube.svg | 3 + backoffice/img/icons/cube_white.svg | 3 + backoffice/img/icons/cubelight.svg | 3 + backoffice/img/icons/cubelight_white.svg | 3 + backoffice/img/icons/dashboard.svg | 3 + backoffice/img/icons/dashboard_white.svg | 3 + backoffice/img/icons/documents.svg | 1 + backoffice/img/icons/documents_white.svg | 5 + backoffice/img/icons/download.svg | 3 + backoffice/img/icons/download_white.svg | 3 + backoffice/img/icons/duplicate.svg | 3 + backoffice/img/icons/duplicate_white.svg | 3 + backoffice/img/icons/edit.svg | 3 + backoffice/img/icons/edit_white.svg | 3 + backoffice/img/icons/excel.svg | 1 + backoffice/img/icons/excel_white.svg | 5 + backoffice/img/icons/file.svg | 3 + backoffice/img/icons/file/dir.png | Bin 0 -> 6937 bytes backoffice/img/icons/file/doc.png | Bin 0 -> 6455 bytes backoffice/img/icons/file/docx.png | Bin 0 -> 6455 bytes backoffice/img/icons/file/file.png | Bin 0 -> 4540 bytes backoffice/img/icons/file/folderup.svg | 22 + backoffice/img/icons/file/folderup_white.svg | 22 + backoffice/img/icons/file/jpg.png | Bin 0 -> 6297 bytes backoffice/img/icons/file/pdf.png | Bin 0 -> 8783 bytes backoffice/img/icons/file/png.png | Bin 0 -> 6297 bytes backoffice/img/icons/file/txt.png | Bin 0 -> 6049 bytes backoffice/img/icons/file/xls.png | Bin 0 -> 6065 bytes backoffice/img/icons/file/xlsx.png | Bin 0 -> 6065 bytes backoffice/img/icons/file_white.svg | 3 + backoffice/img/icons/folder.svg | 3 + backoffice/img/icons/folder_add.svg | 1 + backoffice/img/icons/folder_add_white.svg | 5 + backoffice/img/icons/folder_white.svg | 3 + backoffice/img/icons/globe.svg | 3 + backoffice/img/icons/globe_white.svg | 3 + backoffice/img/icons/group.svg | 3 + backoffice/img/icons/group_white.svg | 3 + backoffice/img/icons/home.svg | 9 + backoffice/img/icons/inbox.svg | 3 + backoffice/img/icons/inbox_white.svg | 3 + backoffice/img/icons/library.svg | 3 + backoffice/img/icons/library_white.svg | 3 + backoffice/img/icons/license.svg | 3 + backoffice/img/icons/license_white.svg | 3 + backoffice/img/icons/list.svg | 3 + backoffice/img/icons/list_white.svg | 3 + backoffice/img/icons/log.svg | 1 + backoffice/img/icons/log_white.svg | 5 + backoffice/img/icons/logout.svg | 3 + backoffice/img/icons/logout_white.svg | 3 + backoffice/img/icons/menu.svg | 3 + backoffice/img/icons/menu_white.svg | 3 + backoffice/img/icons/newspaper.svg | 3 + backoffice/img/icons/newspaper_white.svg | 3 + backoffice/img/icons/numberlist.svg | 3 + backoffice/img/icons/numberlist_white.svg | 3 + backoffice/img/icons/package.svg | 3 + backoffice/img/icons/package_white.svg | 3 + backoffice/img/icons/pdf.svg | 1 + backoffice/img/icons/pdf_white.svg | 5 + backoffice/img/icons/pdfexport.svg | 1 + backoffice/img/icons/pdfexport_white.svg | 1 + backoffice/img/icons/pictures.svg | 1 + backoffice/img/icons/pictures_white.svg | 5 + backoffice/img/icons/plus.svg | 3 + backoffice/img/icons/plus_white.svg | 3 + backoffice/img/icons/projects.svg | 1 + backoffice/img/icons/projects_white.svg | 5 + backoffice/img/icons/remove.svg | 3 + backoffice/img/icons/remove_white.svg | 3 + backoffice/img/icons/squares.svg | 3 + backoffice/img/icons/squares_white.svg | 3 + backoffice/img/icons/target.svg | 3 + backoffice/img/icons/target_white.svg | 3 + backoffice/img/icons/upload.svg | 1 + backoffice/img/icons/upload_white.svg | 5 + backoffice/img/icons/user.svg | 3 + backoffice/img/icons/user_white.svg | 3 + backoffice/img/logo_512.png | Bin 0 -> 31456 bytes backoffice/img/logo_512_xx.png | Bin 0 -> 14719 bytes backoffice/img/no-image-icon.png | Bin 0 -> 20003 bytes backoffice/img/no-news-img.png | Bin 0 -> 17922 bytes backoffice/img/toplogo.png | Bin 0 -> 31456 bytes backoffice/index.cgi | 193 + backoffice/js/admin.js | 106 + backoffice/js/formsave.js | 286 + backoffice/js/module_global.js | 92 + backoffice/js/request.js | 119 + backoffice/tmp/sql.log | 0 backoffice/tmpl/block/cgu.tt | 216 + backoffice/tmpl/block/dlgdeleterow.tt | 62 + backoffice/tmpl/block/dlguploadfile.tt | 91 + backoffice/tmpl/block/head.tt | 29 + backoffice/tmpl/block/snackbar.tt | 1 + backoffice/tmpl/block/toolbars.tt | 9 + backoffice/tmpl/macro/fields.tt | 140 + backoffice/tmpl/module/companies/index.js | 180 + backoffice/tmpl/module/companies/index.tt | 13 + .../companies/widgets/companies/companies.js | 104 + .../widgets/companies/frm_companies.tt | 35 + .../widgets/companies/tbar_companies.tt | 7 + .../widgets/companies/tbl_companies.tt | 3 + backoffice/tmpl/module/dashboard/index.js | 7 + backoffice/tmpl/module/dashboard/index.tt | 19 + backoffice/tmpl/module/planning/index.js | 26 + backoffice/tmpl/module/planning/index.tt | 18 + .../widgets/reportperiod/dlg_reportperiod.tt | 30 + .../widgets/reportperiod/reportperiod.js | 65 + .../widgets/reportperiod/tbar_reportperiod.tt | 5 + .../widgets/reportperiod/tbl_reportperiod.tt | 3 + .../staffworkplan/frm_staffworkplan.tt | 59 + .../widgets/staffworkplan/staffworkplan.js | 243 + .../staffworkplan/tbar_staffworkplan.tt | 7 + .../staffworkplan/tbl_staffworkplan.tt | 3 + backoffice/tmpl/module/profile/dlgpassword.tt | 81 + backoffice/tmpl/module/profile/dlgusername.tt | 90 + backoffice/tmpl/module/profile/index.js | 64 + backoffice/tmpl/module/profile/index.tt | 45 + backoffice/tmpl/module/sites/index.js | 164 + backoffice/tmpl/module/sites/index.tt | 0 backoffice/tmpl/module/staff/index.js | 562 + backoffice/tmpl/module/staff/index.tt | 85 + backoffice/tmpl/module/timetrackers/index.js | 25 + backoffice/tmpl/module/timetrackers/index.tt | 15 + backoffice/tmpl/module/users/index.js | 266 + backoffice/tmpl/module/users/index.tt | 98 + backoffice/tmpl/module/workplans/index.js | 125 + backoffice/tmpl/module/workplans/index.tt | 57 + backoffice/tmpl/skeleton/index.tt | 73 + backoffice/tmpl/skeleton/login.tt | 33 + .../tmpl/skeleton/login/forgotpassword.tt | 20 + backoffice/tmpl/skeleton/login/login.tt | 25 + backoffice/tmpl/skeleton/login/message.tt | 12 + backoffice/tmpl/skeleton/login/register.tt | 49 + .../tmpl/skeleton/login/validationcode.tt | 23 + backoffice/tmpl/skeleton/module.tt | 60 + backoffice/tmpl/skeleton/module_file.tt | 3 + backoffice/vendors/choices/base.css | 191 + backoffice/vendors/choices/base.min.css | 1 + backoffice/vendors/choices/choices.css | 368 + backoffice/vendors/choices/choices.js | 6787 ++++ backoffice/vendors/choices/choices.min.css | 1 + backoffice/vendors/choices/choices.min.js | 58 + backoffice/vendors/choices/scripts/choices.js | 6787 ++++ .../vendors/choices/scripts/choices.min.js | 58 + backoffice/vendors/ctxmenu/ctxmenu.css | 88 + backoffice/vendors/ctxmenu/ctxmenu.js | 296 + backoffice/vendors/flatpickr/flatpickr.css | 784 + backoffice/vendors/flatpickr/flatpickr.js | 2596 ++ .../vendors/flatpickr/flatpickr.min.css | 13 + backoffice/vendors/flatpickr/flatpickr.min.js | 2 + backoffice/vendors/flatpickr/ie.css | 13 + backoffice/vendors/flatpickr/index.d.ts | 4 + backoffice/vendors/flatpickr/l10n/de.d.ts | 66 + backoffice/vendors/flatpickr/l10n/de.js | 70 + .../vendors/flatpickr/l10n/default.d.ts | 3 + backoffice/vendors/flatpickr/l10n/default.js | 83 + backoffice/vendors/flatpickr/l10n/fr.d.ts | 66 + backoffice/vendors/flatpickr/l10n/fr.js | 75 + backoffice/vendors/flatpickr/l10n/lu.d.ts | 67 + backoffice/vendors/flatpickr/l10n/lu.js | 71 + .../plugins/confirmDate/confirmDate.css | 24 + .../plugins/confirmDate/confirmDate.d.ts | 9 + .../plugins/confirmDate/confirmDate.js | 84 + .../plugins/labelPlugin/labelPlugin.d.ts | 3 + .../plugins/labelPlugin/labelPlugin.js | 31 + .../flatpickr/plugins/minMaxTimePlugin.d.ts | 17 + .../flatpickr/plugins/minMaxTimePlugin.js | 326 + .../flatpickr/plugins/monthSelect/index.d.ts | 13 + .../flatpickr/plugins/monthSelect/index.js | 174 + .../flatpickr/plugins/monthSelect/style.css | 69 + .../plugins/monthSelect/tests.spec.d.ts | 1 + .../flatpickr/plugins/rangePlugin.d.ts | 12 + .../vendors/flatpickr/plugins/rangePlugin.js | 146 + .../flatpickr/plugins/scrollPlugin.d.ts | 3 + .../vendors/flatpickr/plugins/scrollPlugin.js | 58 + .../plugins/weekSelect/weekSelect.d.ts | 7 + .../plugins/weekSelect/weekSelect.js | 86 + .../vendors/flatpickr/themes/airbnb.css | 872 + .../vendors/flatpickr/themes/confetti.css | 795 + backoffice/vendors/flatpickr/themes/dark.css | 784 + backoffice/vendors/flatpickr/themes/light.css | 798 + .../flatpickr/themes/material_blue.css | 795 + .../flatpickr/themes/material_green.css | 795 + .../flatpickr/themes/material_orange.css | 795 + .../vendors/flatpickr/themes/material_red.css | 795 + .../vendors/flatpickr/types/globals.d.ts | 20 + .../vendors/flatpickr/types/instance.d.ts | 118 + .../vendors/flatpickr/types/locale.d.ts | 45 + .../vendors/flatpickr/types/options.d.ts | 144 + backoffice/vendors/flatpickr/typings.d.ts | 38 + backoffice/vendors/flatpickr/utils/dates.d.ts | 17 + backoffice/vendors/flatpickr/utils/dom.d.ts | 6 + .../vendors/flatpickr/utils/formatting.d.ts | 13 + backoffice/vendors/flatpickr/utils/index.d.ts | 8 + .../vendors/flatpickr/utils/polyfills.d.ts | 0 backoffice/vendors/jspdf/jspdf.min.js | 286 + .../vendors/jspdf/jspdf.plugin.autotable.js | 1941 + .../jspdf/jspdf.plugin.autotable.min.js | 17 + backoffice/vendors/jsxlsx/LICENSE | 201 + backoffice/vendors/jsxlsx/cpexcel.js | 1505 + backoffice/vendors/jsxlsx/jszip.js | 8999 +++++ backoffice/vendors/jsxlsx/shim.min.js | 2 + backoffice/vendors/jsxlsx/xlsx.core.min.js | 17 + backoffice/vendors/jsxlsx/xlsx.core.min.map | 1 + .../vendors/jsxlsx/xlsx.extendscript.js | 30131 ++++++++++++++++ backoffice/vendors/jsxlsx/xlsx.full.min.js | 23 + backoffice/vendors/jsxlsx/xlsx.full.min.map | 1 + backoffice/vendors/jsxlsx/xlsx.js | 20975 +++++++++++ backoffice/vendors/jsxlsx/xlsx.min.js | 14 + backoffice/vendors/jsxlsx/xlsx.min.map | 1 + .../vendors/moment/moment-with-locales.js | 14765 ++++++++ .../vendors/moment/moment-with-locales.min.js | 1 + backoffice/vendors/moment/moment.js | 4602 +++ backoffice/vendors/moment/moment.min.js | 1 + .../vendors/tabulator/css.old/tabulator.css | 807 + .../tabulator/css.old/tabulator.min.css | 3 + .../tabulator/css.old/tabulator.min.css.map | 1 + .../tabulator/css.old/tabulator_midnight.css | 810 + .../css.old/tabulator_midnight.min.css | 3 + .../css.old/tabulator_midnight.min.css.map | 1 + .../tabulator/css.old/tabulator_modern.css | 832 + .../css.old/tabulator_modern.min.css | 3 + .../css.old/tabulator_modern.min.css.map | 1 + .../tabulator/css.old/tabulator_simple.css | 804 + .../css.old/tabulator_simple.min.css | 3 + .../css.old/tabulator_simple.min.css.map | 1 + .../tabulator/css.old/tabulator_site.css | 804 + .../tabulator/css.old/tabulator_site.min.css | 3 + .../css.old/tabulator_site.min.css.map | 1 + .../vendors/tabulator/css/tabulator.css | 811 + .../vendors/tabulator/css/tabulator.min.css | 3 + .../tabulator/css/tabulator.min.css.map | 1 + .../tabulator/css/tabulator_midnight.css | 814 + .../tabulator/css/tabulator_midnight.min.css | 3 + .../css/tabulator_midnight.min.css.map | 1 + .../tabulator/css/tabulator_modern.css | 836 + .../tabulator/css/tabulator_modern.min.css | 3 + .../css/tabulator_modern.min.css.map | 1 + .../tabulator/css/tabulator_simple.css | 808 + .../tabulator/css/tabulator_simple.min.css | 3 + .../css/tabulator_simple.min.css.map | 1 + .../vendors/tabulator/css/tabulator_site.css | 808 + .../tabulator/css/tabulator_site.min.css | 3 + .../tabulator/css/tabulator_site.min.css.map | 1 + .../tabulator/js.old/modules/accessor.js | 91 + .../tabulator/js.old/modules/accessor.min.js | 2 + .../vendors/tabulator/js.old/modules/ajax.js | 465 + .../tabulator/js.old/modules/ajax.min.js | 2 + .../js.old/modules/calculation_colums.js | 468 + .../js.old/modules/calculation_colums.min.js | 2 + .../tabulator/js.old/modules/clipboard.js | 1011 + .../tabulator/js.old/modules/clipboard.min.js | 2 + .../tabulator/js.old/modules/data_tree.js | 341 + .../tabulator/js.old/modules/data_tree.min.js | 2 + .../tabulator/js.old/modules/download.js | 900 + .../tabulator/js.old/modules/download.min.js | 2 + .../vendors/tabulator/js.old/modules/edit.js | 1727 + .../tabulator/js.old/modules/edit.min.js | 2 + .../tabulator/js.old/modules/filter.js | 754 + .../tabulator/js.old/modules/filter.min.js | 2 + .../tabulator/js.old/modules/format.js | 632 + .../tabulator/js.old/modules/format.min.js | 2 + .../js.old/modules/frozen_columns.js | 243 + .../js.old/modules/frozen_columns.min.js | 2 + .../tabulator/js.old/modules/frozen_rows.js | 98 + .../js.old/modules/frozen_rows.min.js | 2 + .../tabulator/js.old/modules/group_rows.js | 1048 + .../js.old/modules/group_rows.min.js | 2 + .../tabulator/js.old/modules/history.js | 141 + .../tabulator/js.old/modules/history.min.js | 2 + .../js.old/modules/html_table_export.js | 377 + .../js.old/modules/html_table_export.min.js | 2 + .../js.old/modules/html_table_import.js | 203 + .../js.old/modules/html_table_import.min.js | 2 + .../tabulator/js.old/modules/keybindings.js | 382 + .../js.old/modules/keybindings.min.js | 2 + .../js.old/modules/moveable_columns.js | 289 + .../js.old/modules/moveable_columns.min.js | 2 + .../tabulator/js.old/modules/moveable_rows.js | 580 + .../js.old/modules/moveable_rows.min.js | 2 + .../tabulator/js.old/modules/mutator.js | 113 + .../tabulator/js.old/modules/mutator.min.js | 2 + .../vendors/tabulator/js.old/modules/page.js | 636 + .../tabulator/js.old/modules/page.min.js | 2 + .../tabulator/js.old/modules/persistence.js | 222 + .../js.old/modules/persistence.min.js | 2 + .../vendors/tabulator/js.old/modules/print.js | 96 + .../tabulator/js.old/modules/print.min.js | 2 + .../tabulator/js.old/modules/reactive_data.js | 235 + .../js.old/modules/reactive_data.min.js | 2 + .../js.old/modules/resize_columns.js | 161 + .../js.old/modules/resize_columns.min.js | 2 + .../tabulator/js.old/modules/resize_rows.js | 98 + .../js.old/modules/resize_rows.min.js | 2 + .../tabulator/js.old/modules/resize_table.js | 38 + .../js.old/modules/resize_table.min.js | 2 + .../js.old/modules/responsive_layout.js | 255 + .../js.old/modules/responsive_layout.min.js | 2 + .../tabulator/js.old/modules/select_row.js | 361 + .../js.old/modules/select_row.min.js | 2 + .../vendors/tabulator/js.old/modules/sort.js | 560 + .../tabulator/js.old/modules/sort.min.js | 2 + .../tabulator/js.old/modules/validate.js | 219 + .../tabulator/js.old/modules/validate.min.js | 2 + .../vendors/tabulator/js.old/tabulator.js | 22906 ++++++++++++ .../vendors/tabulator/js.old/tabulator.min.js | 11 + .../tabulator/js.old/tabulator_core.js | 7867 ++++ .../tabulator/js.old/tabulator_core.min.js | 5 + .../vendors/tabulator/js/modules/accessor.js | 91 + .../tabulator/js/modules/accessor.min.js | 2 + .../vendors/tabulator/js/modules/ajax.js | 466 + .../vendors/tabulator/js/modules/ajax.min.js | 2 + .../js/modules/calculation_colums.js | 467 + .../js/modules/calculation_colums.min.js | 2 + .../vendors/tabulator/js/modules/clipboard.js | 1037 + .../tabulator/js/modules/clipboard.min.js | 2 + .../vendors/tabulator/js/modules/data_tree.js | 341 + .../tabulator/js/modules/data_tree.min.js | 2 + .../vendors/tabulator/js/modules/download.js | 940 + .../tabulator/js/modules/download.min.js | 2 + .../vendors/tabulator/js/modules/edit.js | 1770 + .../vendors/tabulator/js/modules/edit.min.js | 2 + .../vendors/tabulator/js/modules/filter.js | 747 + .../tabulator/js/modules/filter.min.js | 2 + .../vendors/tabulator/js/modules/format.js | 673 + .../tabulator/js/modules/format.min.js | 2 + .../tabulator/js/modules/frozen_columns.js | 243 + .../js/modules/frozen_columns.min.js | 2 + .../tabulator/js/modules/frozen_rows.js | 98 + .../tabulator/js/modules/frozen_rows.min.js | 2 + .../tabulator/js/modules/group_rows.js | 1052 + .../tabulator/js/modules/group_rows.min.js | 2 + .../vendors/tabulator/js/modules/history.js | 141 + .../tabulator/js/modules/history.min.js | 2 + .../tabulator/js/modules/html_table_export.js | 389 + .../js/modules/html_table_export.min.js | 2 + .../tabulator/js/modules/html_table_import.js | 203 + .../js/modules/html_table_import.min.js | 2 + .../tabulator/js/modules/keybindings.js | 382 + .../tabulator/js/modules/keybindings.min.js | 2 + .../tabulator/js/modules/moveable_columns.js | 289 + .../js/modules/moveable_columns.min.js | 2 + .../tabulator/js/modules/moveable_rows.js | 580 + .../tabulator/js/modules/moveable_rows.min.js | 2 + .../vendors/tabulator/js/modules/mutator.js | 116 + .../tabulator/js/modules/mutator.min.js | 2 + .../vendors/tabulator/js/modules/page.js | 648 + .../vendors/tabulator/js/modules/page.min.js | 2 + .../tabulator/js/modules/persistence.js | 410 + .../tabulator/js/modules/persistence.min.js | 2 + .../vendors/tabulator/js/modules/print.js | 96 + .../vendors/tabulator/js/modules/print.min.js | 2 + .../tabulator/js/modules/reactive_data.js | 235 + .../tabulator/js/modules/reactive_data.min.js | 2 + .../tabulator/js/modules/resize_columns.js | 163 + .../js/modules/resize_columns.min.js | 2 + .../tabulator/js/modules/resize_rows.js | 98 + .../tabulator/js/modules/resize_rows.min.js | 2 + .../tabulator/js/modules/resize_table.js | 42 + .../tabulator/js/modules/resize_table.min.js | 2 + .../tabulator/js/modules/responsive_layout.js | 301 + .../js/modules/responsive_layout.min.js | 2 + .../tabulator/js/modules/select_row.js | 365 + .../tabulator/js/modules/select_row.min.js | 2 + .../vendors/tabulator/js/modules/sort.js | 560 + .../vendors/tabulator/js/modules/sort.min.js | 2 + .../vendors/tabulator/js/modules/validate.js | 217 + .../tabulator/js/modules/validate.min.js | 2 + backoffice/vendors/tabulator/js/tabulator.js | 23850 ++++++++++++ .../vendors/tabulator/js/tabulator.min.js | 11 + .../vendors/tabulator/js/tabulator_core.js | 8281 +++++ .../tabulator/js/tabulator_core.min.js | 6 + backoffice/vendors/tinymce/changelog.txt | 1393 + .../tinymce/js/tinymce/jquery.tinymce.min.js | 91 + .../vendors/tinymce/js/tinymce/langs/de.js | 260 + .../vendors/tinymce/js/tinymce/langs/fr_FR.js | 261 + .../tinymce/js/tinymce/langs/readme.md | 3 + .../vendors/tinymce/js/tinymce/license.txt | 504 + .../js/tinymce/plugins/advlist/plugin.min.js | 9 + .../js/tinymce/plugins/anchor/plugin.min.js | 9 + .../js/tinymce/plugins/autolink/plugin.min.js | 9 + .../tinymce/plugins/autoresize/plugin.min.js | 9 + .../js/tinymce/plugins/autosave/plugin.min.js | 9 + .../js/tinymce/plugins/bbcode/plugin.min.js | 9 + .../js/tinymce/plugins/charmap/plugin.min.js | 9 + .../js/tinymce/plugins/code/plugin.min.js | 9 + .../tinymce/plugins/codesample/plugin.min.js | 9 + .../tinymce/plugins/colorpicker/plugin.min.js | 9 + .../tinymce/plugins/contextmenu/plugin.min.js | 9 + .../plugins/directionality/plugin.min.js | 9 + .../js/tinymce/plugins/emoticons/js/emojis.js | 9015 +++++ .../plugins/emoticons/js/emojis.min.js | 2 + .../tinymce/plugins/emoticons/plugin.min.js | 9 + .../js/tinymce/plugins/fullpage/plugin.min.js | 9 + .../tinymce/plugins/fullscreen/plugin.min.js | 9 + .../js/tinymce/plugins/help/plugin.min.js | 9 + .../js/tinymce/plugins/hr/plugin.min.js | 9 + .../js/tinymce/plugins/image/plugin.min.js | 9 + .../tinymce/plugins/imagetools/plugin.min.js | 9 + .../tinymce/plugins/importcss/plugin.min.js | 9 + .../plugins/insertdatetime/plugin.min.js | 9 + .../plugins/legacyoutput/plugin.min.js | 9 + .../js/tinymce/plugins/link/plugin.min.js | 9 + .../js/tinymce/plugins/lists/plugin.min.js | 9 + .../js/tinymce/plugins/media/plugin.min.js | 9 + .../tinymce/plugins/nonbreaking/plugin.min.js | 9 + .../tinymce/plugins/noneditable/plugin.min.js | 9 + .../tinymce/plugins/pagebreak/plugin.min.js | 9 + .../js/tinymce/plugins/paste/plugin.min.js | 9 + .../js/tinymce/plugins/preview/plugin.min.js | 9 + .../js/tinymce/plugins/print/plugin.min.js | 9 + .../tinymce/plugins/quickbars/plugin.min.js | 9 + .../js/tinymce/plugins/save/plugin.min.js | 9 + .../plugins/searchreplace/plugin.min.js | 9 + .../plugins/spellchecker/plugin.min.js | 9 + .../js/tinymce/plugins/tabfocus/plugin.min.js | 9 + .../js/tinymce/plugins/table/plugin.min.js | 9 + .../js/tinymce/plugins/template/plugin.min.js | 9 + .../tinymce/plugins/textcolor/plugin.min.js | 9 + .../tinymce/plugins/textpattern/plugin.min.js | 9 + .../js/tinymce/plugins/toc/plugin.min.js | 9 + .../plugins/visualblocks/plugin.min.js | 9 + .../tinymce/plugins/visualchars/plugin.min.js | 9 + .../tinymce/plugins/wordcount/plugin.min.js | 9 + .../skins/content/dark/content.min.css | 7 + .../skins/content/default/content.min.css | 7 + .../skins/content/document/content.min.css | 7 + .../skins/content/writer/content.min.css | 7 + .../ui/oxide-dark/content.inline.min.css | 7 + .../skins/ui/oxide-dark/content.min.css | 7 + .../ui/oxide-dark/content.mobile.min.css | 7 + .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../tinymce/skins/ui/oxide-dark/skin.min.css | 7 + .../skins/ui/oxide-dark/skin.mobile.min.css | 7 + .../skins/ui/oxide/content.inline.min.css | 7 + .../js/tinymce/skins/ui/oxide/content.min.css | 7 + .../skins/ui/oxide/content.mobile.min.css | 7 + .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../js/tinymce/skins/ui/oxide/skin.min.css | 7 + .../skins/ui/oxide/skin.mobile.min.css | 7 + .../js/tinymce/themes/mobile/theme.min.js | 9 + .../js/tinymce/themes/silver/theme.min.js | 9 + .../vendors/tinymce/js/tinymce/tinymce.min.js | 9 + css/site.css | 0 css/theme.css | 26 + css/w3pro.css | 379 + dev/db/dumppg.sh | 17 + dev/db/dumpschema.sh | 28 + dev/db/gendefaultschema.sh | 40 + dev/db/potlu_db.public.pg.data.sql | 264 + dev/db/potlu_db.public.pg.full.sql | 1123 + dev/db/potlu_db.public.pg.schema.sql | 873 + img/Apps.png | Bin 0 -> 706 bytes img/Apps.svg | 1 + img/Code.png | Bin 0 -> 1343 bytes img/Code.svg | 1 + img/Disk_HDD.png | Bin 0 -> 1081 bytes img/Disk_HDD.svg | 1 + img/Network.png | Bin 0 -> 1956 bytes img/Network.svg | 1 + img/PrivateCloud.png | Bin 0 -> 854 bytes img/PrivateCloud.svg | 1 + img/Support.png | Bin 0 -> 1258 bytes img/Support.svg | 1 + img/favicon/android-chrome-144x144.png | Bin 0 -> 6818 bytes img/favicon/android-chrome-192x192.png | Bin 0 -> 9015 bytes img/favicon/android-chrome-36x36.png | Bin 0 -> 1408 bytes img/favicon/android-chrome-48x48.png | Bin 0 -> 1722 bytes img/favicon/android-chrome-72x72.png | Bin 0 -> 3493 bytes img/favicon/android-chrome-96x96.png | Bin 0 -> 4586 bytes img/favicon/apple-touch-icon-114x114.png | Bin 0 -> 4367 bytes img/favicon/apple-touch-icon-120x120.png | Bin 0 -> 4550 bytes img/favicon/apple-touch-icon-144x144.png | Bin 0 -> 5494 bytes img/favicon/apple-touch-icon-152x152.png | Bin 0 -> 5833 bytes img/favicon/apple-touch-icon-180x180.png | Bin 0 -> 6894 bytes img/favicon/apple-touch-icon-57x57.png | Bin 0 -> 1751 bytes img/favicon/apple-touch-icon-60x60.png | Bin 0 -> 1804 bytes img/favicon/apple-touch-icon-72x72.png | Bin 0 -> 2039 bytes img/favicon/apple-touch-icon-76x76.png | Bin 0 -> 2919 bytes img/favicon/apple-touch-icon-precomposed.png | Bin 0 -> 8127 bytes img/favicon/apple-touch-icon.png | Bin 0 -> 6894 bytes img/favicon/browserconfig.xml | 12 + img/favicon/favicon-16x16.png | Bin 0 -> 769 bytes img/favicon/favicon-32x32.png | Bin 0 -> 1284 bytes img/favicon/favicon-96x96.png | Bin 0 -> 4586 bytes img/favicon/favicon.ico | Bin 0 -> 7406 bytes img/favicon/manifest.json | 41 + img/favicon/mstile-144x144.png | Bin 0 -> 6797 bytes img/favicon/mstile-150x150.png | Bin 0 -> 6650 bytes img/favicon/mstile-310x150.png | Bin 0 -> 7237 bytes img/favicon/mstile-310x310.png | Bin 0 -> 14580 bytes img/favicon/mstile-70x70.png | Bin 0 -> 4651 bytes img/favicon/safari-pinned-tab.svg | 32 + img/saffranitconsulting.svg | 96 + img/slides/slide1.jpg | Bin 0 -> 1663867 bytes index.cgi | 88 + js/slides.js | 27 + {css => oldsite/css}/bootstrap-theme.min.css | 0 {css => oldsite/css}/bootstrap.min.css | 0 .../fonts}/glyphicons-halflings-regular.eot | Bin .../fonts}/glyphicons-halflings-regular.svg | 0 .../fonts}/glyphicons-halflings-regular.ttf | Bin .../fonts}/glyphicons-halflings-regular.woff | Bin .../fonts}/glyphicons-halflings-regular.woff2 | Bin .../google0773c098c20cc727.html | 0 {img => oldsite/img}/contact/facebook.png | Bin {img => oldsite/img}/contact/linkedin.png | Bin {img => oldsite/img}/contact/mail.png | Bin {img => oldsite/img}/contact/skype.png | Bin {img => oldsite/img}/contact/twitter.png | Bin index.html => oldsite/index.html | 0 {js => oldsite/js}/bootstrap.min.js | 0 {js => oldsite/js}/mail.js | 0 robots.txt => oldsite/robots.txt | 0 tmpl/block/404.tt | 3 + tmpl/block/footer.tt | 28 + tmpl/block/head.tt | 26 + tmpl/block/sidebar.tt | 0 tmpl/block/topnav.tt | 29 + tmpl/page/aboutus.tt | 3 + tmpl/page/apps.tt | 3 + tmpl/page/backup.tt | 3 + tmpl/page/contact.tt | 3 + tmpl/page/development.tt | 3 + tmpl/page/hosting.tt | 3 + tmpl/page/impressum.tt | 3 + tmpl/page/index.tt | 88 + tmpl/page/index2.tt | 7 + tmpl/page/privacy.tt | 3 + tmpl/page/privatecloud.tt | 3 + tmpl/page/shop.tt | 3 + tmpl/page/support.tt | 3 + tmpl/page/terms.tt | 3 + tmpl/skeleton/index.tt | 24 + 608 files changed, 232275 insertions(+) create mode 100755 .htaccess create mode 100644 backoffice/.htaccess create mode 100755 backoffice/api/db.cgi create mode 100755 backoffice/api/file.cgi create mode 100755 backoffice/api/index.cgi create mode 100644 backoffice/api/lib/dksconfig.pm create mode 100644 backoffice/api/lib/dksdb.pm create mode 100644 backoffice/api/lib/dkssavefile.pm create mode 100644 backoffice/api/lib/sendemail.pm create mode 100644 backoffice/api/lib/session.pm create mode 100644 backoffice/api/sendEmail create mode 100644 backoffice/api/tmp/sql.log create mode 100755 backoffice/api/upload.cgi create mode 100644 backoffice/css/module.css create mode 100644 backoffice/css/w3pro.css create mode 100644 backoffice/data/.htaccess create mode 100644 backoffice/data/company/.htaccess create mode 100644 backoffice/data/schemata/.htaccess create mode 100644 backoffice/data/schemata/defaultcompany.schema.sql create mode 100644 backoffice/img/bg1.jpg create mode 100644 backoffice/img/favicon/android-icon-144x144.png create mode 100644 backoffice/img/favicon/android-icon-192x192.png create mode 100644 backoffice/img/favicon/android-icon-36x36.png create mode 100644 backoffice/img/favicon/android-icon-48x48.png create mode 100644 backoffice/img/favicon/android-icon-72x72.png create mode 100644 backoffice/img/favicon/android-icon-96x96.png create mode 100644 backoffice/img/favicon/apple-icon-114x114.png create mode 100644 backoffice/img/favicon/apple-icon-120x120.png create mode 100644 backoffice/img/favicon/apple-icon-144x144.png create mode 100644 backoffice/img/favicon/apple-icon-152x152.png create mode 100644 backoffice/img/favicon/apple-icon-180x180.png create mode 100644 backoffice/img/favicon/apple-icon-57x57.png create mode 100644 backoffice/img/favicon/apple-icon-60x60.png create mode 100644 backoffice/img/favicon/apple-icon-72x72.png create mode 100644 backoffice/img/favicon/apple-icon-76x76.png create mode 100644 backoffice/img/favicon/apple-icon-precomposed.png create mode 100644 backoffice/img/favicon/apple-icon.png create mode 100644 backoffice/img/favicon/browserconfig.xml create mode 100644 backoffice/img/favicon/favicon-16x16.png create mode 100644 backoffice/img/favicon/favicon-32x32.png create mode 100644 backoffice/img/favicon/favicon-96x96.png create mode 100644 backoffice/img/favicon/favicon.ico create mode 100644 backoffice/img/favicon/manifest.json create mode 100644 backoffice/img/favicon/ms-icon-144x144.png create mode 100644 backoffice/img/favicon/ms-icon-150x150.png create mode 100644 backoffice/img/favicon/ms-icon-310x310.png create mode 100644 backoffice/img/favicon/ms-icon-70x70.png create mode 100644 backoffice/img/hourtrax.png create mode 100644 backoffice/img/icons/Agreement_01.svg create mode 100644 backoffice/img/icons/Bill.svg create mode 100644 backoffice/img/icons/Document_Save.svg create mode 100644 backoffice/img/icons/Floppy.svg create mode 100644 backoffice/img/icons/Folder_Delete_01.svg create mode 100644 backoffice/img/icons/Folder_Find_01.svg create mode 100644 backoffice/img/icons/Save.svg create mode 100644 backoffice/img/icons/access.svg create mode 100644 backoffice/img/icons/access_white.svg create mode 100644 backoffice/img/icons/address.svg create mode 100644 backoffice/img/icons/address_white.svg create mode 100644 backoffice/img/icons/apps.svg create mode 100644 backoffice/img/icons/apps_white.svg create mode 100644 backoffice/img/icons/archive.svg create mode 100644 backoffice/img/icons/archive_white.svg create mode 100644 backoffice/img/icons/calendar.svg create mode 100644 backoffice/img/icons/calendar_white.svg create mode 100644 backoffice/img/icons/club.svg create mode 100644 backoffice/img/icons/club_white.svg create mode 100644 backoffice/img/icons/clubs.svg create mode 100644 backoffice/img/icons/clubs_white.svg create mode 100644 backoffice/img/icons/code.svg create mode 100644 backoffice/img/icons/company.svg create mode 100644 backoffice/img/icons/company_white.svg create mode 100644 backoffice/img/icons/cube.svg create mode 100644 backoffice/img/icons/cube_white.svg create mode 100644 backoffice/img/icons/cubelight.svg create mode 100644 backoffice/img/icons/cubelight_white.svg create mode 100644 backoffice/img/icons/dashboard.svg create mode 100644 backoffice/img/icons/dashboard_white.svg create mode 100644 backoffice/img/icons/documents.svg create mode 100644 backoffice/img/icons/documents_white.svg create mode 100644 backoffice/img/icons/download.svg create mode 100644 backoffice/img/icons/download_white.svg create mode 100644 backoffice/img/icons/duplicate.svg create mode 100644 backoffice/img/icons/duplicate_white.svg create mode 100644 backoffice/img/icons/edit.svg create mode 100644 backoffice/img/icons/edit_white.svg create mode 100644 backoffice/img/icons/excel.svg create mode 100644 backoffice/img/icons/excel_white.svg create mode 100644 backoffice/img/icons/file.svg create mode 100644 backoffice/img/icons/file/dir.png create mode 100644 backoffice/img/icons/file/doc.png create mode 100644 backoffice/img/icons/file/docx.png create mode 100644 backoffice/img/icons/file/file.png create mode 100644 backoffice/img/icons/file/folderup.svg create mode 100644 backoffice/img/icons/file/folderup_white.svg create mode 100644 backoffice/img/icons/file/jpg.png create mode 100644 backoffice/img/icons/file/pdf.png create mode 100644 backoffice/img/icons/file/png.png create mode 100644 backoffice/img/icons/file/txt.png create mode 100644 backoffice/img/icons/file/xls.png create mode 100644 backoffice/img/icons/file/xlsx.png create mode 100644 backoffice/img/icons/file_white.svg create mode 100644 backoffice/img/icons/folder.svg create mode 100644 backoffice/img/icons/folder_add.svg create mode 100644 backoffice/img/icons/folder_add_white.svg create mode 100644 backoffice/img/icons/folder_white.svg create mode 100644 backoffice/img/icons/globe.svg create mode 100644 backoffice/img/icons/globe_white.svg create mode 100644 backoffice/img/icons/group.svg create mode 100644 backoffice/img/icons/group_white.svg create mode 100644 backoffice/img/icons/home.svg create mode 100644 backoffice/img/icons/inbox.svg create mode 100644 backoffice/img/icons/inbox_white.svg create mode 100644 backoffice/img/icons/library.svg create mode 100644 backoffice/img/icons/library_white.svg create mode 100644 backoffice/img/icons/license.svg create mode 100644 backoffice/img/icons/license_white.svg create mode 100644 backoffice/img/icons/list.svg create mode 100644 backoffice/img/icons/list_white.svg create mode 100644 backoffice/img/icons/log.svg create mode 100644 backoffice/img/icons/log_white.svg create mode 100644 backoffice/img/icons/logout.svg create mode 100644 backoffice/img/icons/logout_white.svg create mode 100644 backoffice/img/icons/menu.svg create mode 100644 backoffice/img/icons/menu_white.svg create mode 100644 backoffice/img/icons/newspaper.svg create mode 100644 backoffice/img/icons/newspaper_white.svg create mode 100644 backoffice/img/icons/numberlist.svg create mode 100644 backoffice/img/icons/numberlist_white.svg create mode 100644 backoffice/img/icons/package.svg create mode 100644 backoffice/img/icons/package_white.svg create mode 100644 backoffice/img/icons/pdf.svg create mode 100644 backoffice/img/icons/pdf_white.svg create mode 100644 backoffice/img/icons/pdfexport.svg create mode 100644 backoffice/img/icons/pdfexport_white.svg create mode 100644 backoffice/img/icons/pictures.svg create mode 100644 backoffice/img/icons/pictures_white.svg create mode 100644 backoffice/img/icons/plus.svg create mode 100644 backoffice/img/icons/plus_white.svg create mode 100644 backoffice/img/icons/projects.svg create mode 100644 backoffice/img/icons/projects_white.svg create mode 100644 backoffice/img/icons/remove.svg create mode 100644 backoffice/img/icons/remove_white.svg create mode 100644 backoffice/img/icons/squares.svg create mode 100644 backoffice/img/icons/squares_white.svg create mode 100644 backoffice/img/icons/target.svg create mode 100644 backoffice/img/icons/target_white.svg create mode 100644 backoffice/img/icons/upload.svg create mode 100644 backoffice/img/icons/upload_white.svg create mode 100644 backoffice/img/icons/user.svg create mode 100644 backoffice/img/icons/user_white.svg create mode 100644 backoffice/img/logo_512.png create mode 100644 backoffice/img/logo_512_xx.png create mode 100644 backoffice/img/no-image-icon.png create mode 100644 backoffice/img/no-news-img.png create mode 100644 backoffice/img/toplogo.png create mode 100755 backoffice/index.cgi create mode 100644 backoffice/js/admin.js create mode 100644 backoffice/js/formsave.js create mode 100644 backoffice/js/module_global.js create mode 100644 backoffice/js/request.js create mode 100644 backoffice/tmp/sql.log create mode 100644 backoffice/tmpl/block/cgu.tt create mode 100644 backoffice/tmpl/block/dlgdeleterow.tt create mode 100644 backoffice/tmpl/block/dlguploadfile.tt create mode 100644 backoffice/tmpl/block/head.tt create mode 100644 backoffice/tmpl/block/snackbar.tt create mode 100644 backoffice/tmpl/block/toolbars.tt create mode 100644 backoffice/tmpl/macro/fields.tt create mode 100644 backoffice/tmpl/module/companies/index.js create mode 100644 backoffice/tmpl/module/companies/index.tt create mode 100644 backoffice/tmpl/module/companies/widgets/companies/companies.js create mode 100644 backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt create mode 100644 backoffice/tmpl/module/companies/widgets/companies/tbar_companies.tt create mode 100644 backoffice/tmpl/module/companies/widgets/companies/tbl_companies.tt create mode 100644 backoffice/tmpl/module/dashboard/index.js create mode 100644 backoffice/tmpl/module/dashboard/index.tt create mode 100644 backoffice/tmpl/module/planning/index.js create mode 100644 backoffice/tmpl/module/planning/index.tt create mode 100644 backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt create mode 100644 backoffice/tmpl/module/planning/widgets/reportperiod/reportperiod.js create mode 100644 backoffice/tmpl/module/planning/widgets/reportperiod/tbar_reportperiod.tt create mode 100644 backoffice/tmpl/module/planning/widgets/reportperiod/tbl_reportperiod.tt create mode 100644 backoffice/tmpl/module/planning/widgets/staffworkplan/frm_staffworkplan.tt create mode 100644 backoffice/tmpl/module/planning/widgets/staffworkplan/staffworkplan.js create mode 100644 backoffice/tmpl/module/planning/widgets/staffworkplan/tbar_staffworkplan.tt create mode 100644 backoffice/tmpl/module/planning/widgets/staffworkplan/tbl_staffworkplan.tt create mode 100644 backoffice/tmpl/module/profile/dlgpassword.tt create mode 100644 backoffice/tmpl/module/profile/dlgusername.tt create mode 100644 backoffice/tmpl/module/profile/index.js create mode 100644 backoffice/tmpl/module/profile/index.tt create mode 100644 backoffice/tmpl/module/sites/index.js create mode 100644 backoffice/tmpl/module/sites/index.tt create mode 100644 backoffice/tmpl/module/staff/index.js create mode 100644 backoffice/tmpl/module/staff/index.tt create mode 100644 backoffice/tmpl/module/timetrackers/index.js create mode 100644 backoffice/tmpl/module/timetrackers/index.tt create mode 100644 backoffice/tmpl/module/users/index.js create mode 100644 backoffice/tmpl/module/users/index.tt create mode 100644 backoffice/tmpl/module/workplans/index.js create mode 100644 backoffice/tmpl/module/workplans/index.tt create mode 100644 backoffice/tmpl/skeleton/index.tt create mode 100644 backoffice/tmpl/skeleton/login.tt create mode 100644 backoffice/tmpl/skeleton/login/forgotpassword.tt create mode 100644 backoffice/tmpl/skeleton/login/login.tt create mode 100644 backoffice/tmpl/skeleton/login/message.tt create mode 100644 backoffice/tmpl/skeleton/login/register.tt create mode 100644 backoffice/tmpl/skeleton/login/validationcode.tt create mode 100644 backoffice/tmpl/skeleton/module.tt create mode 100644 backoffice/tmpl/skeleton/module_file.tt create mode 100644 backoffice/vendors/choices/base.css create mode 100644 backoffice/vendors/choices/base.min.css create mode 100644 backoffice/vendors/choices/choices.css create mode 100644 backoffice/vendors/choices/choices.js create mode 100644 backoffice/vendors/choices/choices.min.css create mode 100644 backoffice/vendors/choices/choices.min.js create mode 100644 backoffice/vendors/choices/scripts/choices.js create mode 100644 backoffice/vendors/choices/scripts/choices.min.js create mode 100644 backoffice/vendors/ctxmenu/ctxmenu.css create mode 100644 backoffice/vendors/ctxmenu/ctxmenu.js create mode 100644 backoffice/vendors/flatpickr/flatpickr.css create mode 100644 backoffice/vendors/flatpickr/flatpickr.js create mode 100644 backoffice/vendors/flatpickr/flatpickr.min.css create mode 100644 backoffice/vendors/flatpickr/flatpickr.min.js create mode 100644 backoffice/vendors/flatpickr/ie.css create mode 100644 backoffice/vendors/flatpickr/index.d.ts create mode 100644 backoffice/vendors/flatpickr/l10n/de.d.ts create mode 100644 backoffice/vendors/flatpickr/l10n/de.js create mode 100644 backoffice/vendors/flatpickr/l10n/default.d.ts create mode 100644 backoffice/vendors/flatpickr/l10n/default.js create mode 100644 backoffice/vendors/flatpickr/l10n/fr.d.ts create mode 100644 backoffice/vendors/flatpickr/l10n/fr.js create mode 100644 backoffice/vendors/flatpickr/l10n/lu.d.ts create mode 100644 backoffice/vendors/flatpickr/l10n/lu.js create mode 100644 backoffice/vendors/flatpickr/plugins/confirmDate/confirmDate.css create mode 100644 backoffice/vendors/flatpickr/plugins/confirmDate/confirmDate.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/confirmDate/confirmDate.js create mode 100644 backoffice/vendors/flatpickr/plugins/labelPlugin/labelPlugin.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/labelPlugin/labelPlugin.js create mode 100644 backoffice/vendors/flatpickr/plugins/minMaxTimePlugin.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/minMaxTimePlugin.js create mode 100644 backoffice/vendors/flatpickr/plugins/monthSelect/index.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/monthSelect/index.js create mode 100644 backoffice/vendors/flatpickr/plugins/monthSelect/style.css create mode 100644 backoffice/vendors/flatpickr/plugins/monthSelect/tests.spec.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/rangePlugin.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/rangePlugin.js create mode 100644 backoffice/vendors/flatpickr/plugins/scrollPlugin.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/scrollPlugin.js create mode 100644 backoffice/vendors/flatpickr/plugins/weekSelect/weekSelect.d.ts create mode 100644 backoffice/vendors/flatpickr/plugins/weekSelect/weekSelect.js create mode 100644 backoffice/vendors/flatpickr/themes/airbnb.css create mode 100644 backoffice/vendors/flatpickr/themes/confetti.css create mode 100644 backoffice/vendors/flatpickr/themes/dark.css create mode 100644 backoffice/vendors/flatpickr/themes/light.css create mode 100644 backoffice/vendors/flatpickr/themes/material_blue.css create mode 100644 backoffice/vendors/flatpickr/themes/material_green.css create mode 100644 backoffice/vendors/flatpickr/themes/material_orange.css create mode 100644 backoffice/vendors/flatpickr/themes/material_red.css create mode 100644 backoffice/vendors/flatpickr/types/globals.d.ts create mode 100644 backoffice/vendors/flatpickr/types/instance.d.ts create mode 100644 backoffice/vendors/flatpickr/types/locale.d.ts create mode 100644 backoffice/vendors/flatpickr/types/options.d.ts create mode 100644 backoffice/vendors/flatpickr/typings.d.ts create mode 100644 backoffice/vendors/flatpickr/utils/dates.d.ts create mode 100644 backoffice/vendors/flatpickr/utils/dom.d.ts create mode 100644 backoffice/vendors/flatpickr/utils/formatting.d.ts create mode 100644 backoffice/vendors/flatpickr/utils/index.d.ts create mode 100644 backoffice/vendors/flatpickr/utils/polyfills.d.ts create mode 100644 backoffice/vendors/jspdf/jspdf.min.js create mode 100644 backoffice/vendors/jspdf/jspdf.plugin.autotable.js create mode 100644 backoffice/vendors/jspdf/jspdf.plugin.autotable.min.js create mode 100644 backoffice/vendors/jsxlsx/LICENSE create mode 100644 backoffice/vendors/jsxlsx/cpexcel.js create mode 100644 backoffice/vendors/jsxlsx/jszip.js create mode 100644 backoffice/vendors/jsxlsx/shim.min.js create mode 100644 backoffice/vendors/jsxlsx/xlsx.core.min.js create mode 100644 backoffice/vendors/jsxlsx/xlsx.core.min.map create mode 100644 backoffice/vendors/jsxlsx/xlsx.extendscript.js create mode 100644 backoffice/vendors/jsxlsx/xlsx.full.min.js create mode 100644 backoffice/vendors/jsxlsx/xlsx.full.min.map create mode 100644 backoffice/vendors/jsxlsx/xlsx.js create mode 100644 backoffice/vendors/jsxlsx/xlsx.min.js create mode 100644 backoffice/vendors/jsxlsx/xlsx.min.map create mode 100644 backoffice/vendors/moment/moment-with-locales.js create mode 100644 backoffice/vendors/moment/moment-with-locales.min.js create mode 100644 backoffice/vendors/moment/moment.js create mode 100644 backoffice/vendors/moment/moment.min.js create mode 100644 backoffice/vendors/tabulator/css.old/tabulator.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator.min.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator.min.css.map create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_midnight.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css.map create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_modern.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_modern.min.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_modern.min.css.map create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_simple.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_simple.min.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_simple.min.css.map create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_site.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_site.min.css create mode 100644 backoffice/vendors/tabulator/css.old/tabulator_site.min.css.map create mode 100644 backoffice/vendors/tabulator/css/tabulator.css create mode 100644 backoffice/vendors/tabulator/css/tabulator.min.css create mode 100644 backoffice/vendors/tabulator/css/tabulator.min.css.map create mode 100644 backoffice/vendors/tabulator/css/tabulator_midnight.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_midnight.min.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_midnight.min.css.map create mode 100644 backoffice/vendors/tabulator/css/tabulator_modern.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_modern.min.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_modern.min.css.map create mode 100644 backoffice/vendors/tabulator/css/tabulator_simple.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_simple.min.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_simple.min.css.map create mode 100644 backoffice/vendors/tabulator/css/tabulator_site.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_site.min.css create mode 100644 backoffice/vendors/tabulator/css/tabulator_site.min.css.map create mode 100644 backoffice/vendors/tabulator/js.old/modules/accessor.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/accessor.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/ajax.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/ajax.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/calculation_colums.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/calculation_colums.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/clipboard.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/clipboard.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/data_tree.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/data_tree.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/download.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/download.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/edit.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/edit.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/filter.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/filter.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/format.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/format.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/frozen_columns.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/frozen_columns.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/frozen_rows.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/frozen_rows.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/group_rows.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/group_rows.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/history.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/history.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/html_table_export.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/html_table_export.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/html_table_import.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/html_table_import.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/keybindings.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/keybindings.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/moveable_columns.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/moveable_columns.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/moveable_rows.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/moveable_rows.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/mutator.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/mutator.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/page.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/page.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/persistence.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/persistence.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/print.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/print.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/reactive_data.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/reactive_data.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/resize_columns.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/resize_columns.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/resize_rows.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/resize_rows.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/resize_table.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/resize_table.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/responsive_layout.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/responsive_layout.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/select_row.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/select_row.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/sort.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/sort.min.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/validate.js create mode 100644 backoffice/vendors/tabulator/js.old/modules/validate.min.js create mode 100644 backoffice/vendors/tabulator/js.old/tabulator.js create mode 100644 backoffice/vendors/tabulator/js.old/tabulator.min.js create mode 100644 backoffice/vendors/tabulator/js.old/tabulator_core.js create mode 100644 backoffice/vendors/tabulator/js.old/tabulator_core.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/accessor.js create mode 100644 backoffice/vendors/tabulator/js/modules/accessor.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/ajax.js create mode 100644 backoffice/vendors/tabulator/js/modules/ajax.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/calculation_colums.js create mode 100644 backoffice/vendors/tabulator/js/modules/calculation_colums.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/clipboard.js create mode 100644 backoffice/vendors/tabulator/js/modules/clipboard.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/data_tree.js create mode 100644 backoffice/vendors/tabulator/js/modules/data_tree.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/download.js create mode 100644 backoffice/vendors/tabulator/js/modules/download.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/edit.js create mode 100644 backoffice/vendors/tabulator/js/modules/edit.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/filter.js create mode 100644 backoffice/vendors/tabulator/js/modules/filter.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/format.js create mode 100644 backoffice/vendors/tabulator/js/modules/format.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/frozen_columns.js create mode 100644 backoffice/vendors/tabulator/js/modules/frozen_columns.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/frozen_rows.js create mode 100644 backoffice/vendors/tabulator/js/modules/frozen_rows.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/group_rows.js create mode 100644 backoffice/vendors/tabulator/js/modules/group_rows.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/history.js create mode 100644 backoffice/vendors/tabulator/js/modules/history.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/html_table_export.js create mode 100644 backoffice/vendors/tabulator/js/modules/html_table_export.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/html_table_import.js create mode 100644 backoffice/vendors/tabulator/js/modules/html_table_import.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/keybindings.js create mode 100644 backoffice/vendors/tabulator/js/modules/keybindings.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/moveable_columns.js create mode 100644 backoffice/vendors/tabulator/js/modules/moveable_columns.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/moveable_rows.js create mode 100644 backoffice/vendors/tabulator/js/modules/moveable_rows.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/mutator.js create mode 100644 backoffice/vendors/tabulator/js/modules/mutator.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/page.js create mode 100644 backoffice/vendors/tabulator/js/modules/page.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/persistence.js create mode 100644 backoffice/vendors/tabulator/js/modules/persistence.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/print.js create mode 100644 backoffice/vendors/tabulator/js/modules/print.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/reactive_data.js create mode 100644 backoffice/vendors/tabulator/js/modules/reactive_data.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/resize_columns.js create mode 100644 backoffice/vendors/tabulator/js/modules/resize_columns.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/resize_rows.js create mode 100644 backoffice/vendors/tabulator/js/modules/resize_rows.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/resize_table.js create mode 100644 backoffice/vendors/tabulator/js/modules/resize_table.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/responsive_layout.js create mode 100644 backoffice/vendors/tabulator/js/modules/responsive_layout.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/select_row.js create mode 100644 backoffice/vendors/tabulator/js/modules/select_row.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/sort.js create mode 100644 backoffice/vendors/tabulator/js/modules/sort.min.js create mode 100644 backoffice/vendors/tabulator/js/modules/validate.js create mode 100644 backoffice/vendors/tabulator/js/modules/validate.min.js create mode 100644 backoffice/vendors/tabulator/js/tabulator.js create mode 100644 backoffice/vendors/tabulator/js/tabulator.min.js create mode 100644 backoffice/vendors/tabulator/js/tabulator_core.js create mode 100644 backoffice/vendors/tabulator/js/tabulator_core.min.js create mode 100644 backoffice/vendors/tinymce/changelog.txt create mode 100644 backoffice/vendors/tinymce/js/tinymce/jquery.tinymce.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/langs/de.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/langs/fr_FR.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/langs/readme.md create mode 100644 backoffice/vendors/tinymce/js/tinymce/license.txt create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/content/default/content.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/content/document/content.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css create mode 100644 backoffice/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/themes/silver/theme.min.js create mode 100644 backoffice/vendors/tinymce/js/tinymce/tinymce.min.js create mode 100644 css/site.css create mode 100644 css/theme.css create mode 100644 css/w3pro.css create mode 100644 dev/db/dumppg.sh create mode 100644 dev/db/dumpschema.sh create mode 100755 dev/db/gendefaultschema.sh create mode 100644 dev/db/potlu_db.public.pg.data.sql create mode 100644 dev/db/potlu_db.public.pg.full.sql create mode 100644 dev/db/potlu_db.public.pg.schema.sql create mode 100644 img/Apps.png create mode 100755 img/Apps.svg create mode 100644 img/Code.png create mode 100755 img/Code.svg create mode 100644 img/Disk_HDD.png create mode 100755 img/Disk_HDD.svg create mode 100644 img/Network.png create mode 100755 img/Network.svg create mode 100644 img/PrivateCloud.png create mode 100755 img/PrivateCloud.svg create mode 100644 img/Support.png create mode 100755 img/Support.svg create mode 100644 img/favicon/android-chrome-144x144.png create mode 100644 img/favicon/android-chrome-192x192.png create mode 100644 img/favicon/android-chrome-36x36.png create mode 100644 img/favicon/android-chrome-48x48.png create mode 100644 img/favicon/android-chrome-72x72.png create mode 100644 img/favicon/android-chrome-96x96.png create mode 100644 img/favicon/apple-touch-icon-114x114.png create mode 100644 img/favicon/apple-touch-icon-120x120.png create mode 100644 img/favicon/apple-touch-icon-144x144.png create mode 100644 img/favicon/apple-touch-icon-152x152.png create mode 100644 img/favicon/apple-touch-icon-180x180.png create mode 100644 img/favicon/apple-touch-icon-57x57.png create mode 100644 img/favicon/apple-touch-icon-60x60.png create mode 100644 img/favicon/apple-touch-icon-72x72.png create mode 100644 img/favicon/apple-touch-icon-76x76.png create mode 100644 img/favicon/apple-touch-icon-precomposed.png create mode 100644 img/favicon/apple-touch-icon.png create mode 100644 img/favicon/browserconfig.xml create mode 100644 img/favicon/favicon-16x16.png create mode 100644 img/favicon/favicon-32x32.png create mode 100644 img/favicon/favicon-96x96.png create mode 100644 img/favicon/favicon.ico create mode 100644 img/favicon/manifest.json create mode 100644 img/favicon/mstile-144x144.png create mode 100644 img/favicon/mstile-150x150.png create mode 100644 img/favicon/mstile-310x150.png create mode 100644 img/favicon/mstile-310x310.png create mode 100644 img/favicon/mstile-70x70.png create mode 100644 img/favicon/safari-pinned-tab.svg create mode 100755 img/saffranitconsulting.svg create mode 100644 img/slides/slide1.jpg create mode 100755 index.cgi create mode 100644 js/slides.js rename {css => oldsite/css}/bootstrap-theme.min.css (100%) rename {css => oldsite/css}/bootstrap.min.css (100%) rename {fonts => oldsite/fonts}/glyphicons-halflings-regular.eot (100%) rename {fonts => oldsite/fonts}/glyphicons-halflings-regular.svg (100%) rename {fonts => oldsite/fonts}/glyphicons-halflings-regular.ttf (100%) rename {fonts => oldsite/fonts}/glyphicons-halflings-regular.woff (100%) rename {fonts => oldsite/fonts}/glyphicons-halflings-regular.woff2 (100%) rename google0773c098c20cc727.html => oldsite/google0773c098c20cc727.html (100%) rename {img => oldsite/img}/contact/facebook.png (100%) rename {img => oldsite/img}/contact/linkedin.png (100%) rename {img => oldsite/img}/contact/mail.png (100%) rename {img => oldsite/img}/contact/skype.png (100%) rename {img => oldsite/img}/contact/twitter.png (100%) rename index.html => oldsite/index.html (100%) rename {js => oldsite/js}/bootstrap.min.js (100%) rename {js => oldsite/js}/mail.js (100%) rename robots.txt => oldsite/robots.txt (100%) create mode 100644 tmpl/block/404.tt create mode 100644 tmpl/block/footer.tt create mode 100644 tmpl/block/head.tt create mode 100644 tmpl/block/sidebar.tt create mode 100644 tmpl/block/topnav.tt create mode 100644 tmpl/page/aboutus.tt create mode 100644 tmpl/page/apps.tt create mode 100644 tmpl/page/backup.tt create mode 100644 tmpl/page/contact.tt create mode 100644 tmpl/page/development.tt create mode 100644 tmpl/page/hosting.tt create mode 100644 tmpl/page/impressum.tt create mode 100644 tmpl/page/index.tt create mode 100644 tmpl/page/index2.tt create mode 100644 tmpl/page/privacy.tt create mode 100644 tmpl/page/privatecloud.tt create mode 100644 tmpl/page/shop.tt create mode 100644 tmpl/page/support.tt create mode 100644 tmpl/page/terms.tt create mode 100644 tmpl/skeleton/index.tt diff --git a/.htaccess b/.htaccess new file mode 100755 index 0000000..4cb122b --- /dev/null +++ b/.htaccess @@ -0,0 +1,17 @@ +#RewriteEngine On +#RewriteCond %{SERVER_PORT} 80 +#RewriteRule ^(.*)$ https://www.dks.lu/$1 [R,L] +#AddType application/octet-stream .pdf +#SetEnv PERL5LIB "/home/kilian/perl5/lib/perl5" +RewriteEngine on +#dev-mode begin +DirectoryIndex index.cgi index.html +AddHandler cgi-script .cgi +#devmode end +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d + +#RewriteCond %{REQUEST_URI} !/dks_lu/apps/.* +RewriteRule "^(.*)$" "index.cgi" [NC,L,QSA] +#RewriteCond %{REQUEST_URI} !/dks_lu/apps/api/.* +#RewriteRule "^(.*)$" "apps/index.cgi?p=" [NC,L,QSA] diff --git a/backoffice/.htaccess b/backoffice/.htaccess new file mode 100644 index 0000000..ff153d9 --- /dev/null +++ b/backoffice/.htaccess @@ -0,0 +1,9 @@ +RewriteEngine on + +DirectoryIndex index.cgi index.html +AddHandler cgi-script .cgi +#RewriteBase / +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d + +RewriteRule "^(.*)$" "index.cgi" [NC,L,QSA] \ No newline at end of file diff --git a/backoffice/api/db.cgi b/backoffice/api/db.cgi new file mode 100755 index 0000000..5233b5c --- /dev/null +++ b/backoffice/api/db.cgi @@ -0,0 +1,108 @@ +#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use CGI; +use CGI::Cookie; +# use CGI::Carp qw/fatalsToBrowser/; +use File::Basename; +use JSON::PP; + +use dksconfig qw/$sitecfg/; +use dksdb; + +use session; +#use sendemail; +my $cgi = new CGI(); +my $scriptpath = $cgi->url(-absolute => 1); +my $p = (); +my @params = $cgi->param(); +foreach my $pe (@params){ + $p->{$pe} = $cgi->param($pe); +} +my $html->{result} = (); +$p->{sid} = $cgi->cookie($sitecfg->{cookiename}); +my $se = session->new(); +my $sess = $se->getsession($p->{sid}); +print $cgi->header(-type=>"application/json", -charset => "utf-8"); +if ($sess == undef){ + $html->{error} = "No Authorisation"; + print JSON::PP::encode_json($html); + exit(0); +} +# $html->{p} = $p; +# $html->{sess} =$sess; +#my $datapath = $ENV{"DOCUMENT_ROOT"}.dirname(dirname($scriptpath)).'/data/'; +if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ + + my @params = $cgi->param(); + foreach my $pp (@params){ + $p->{$pp} = $cgi->param($pp); + } + my $db = dksdb->new(); + if (exists($p->{get})){ + my $schema = "public"; + if (exists($p->{schemata})){ + $schema = $p->{schemata}; + } + my $sql = "select * from ".$schema.".vw_".$p->{get}; + if (exists($p->{fields}) ){ + $sql = "select ".$p->{fields}." from ".$schema.".vw_".$p->{get}; + } + if (exists($p->{filter})){ + $sql .= " WHERE ".$p->{filter}.";"; + } + $html->{result}->{sqldata} = $db->dbqueryarray($sql); + } + elsif (exists($p->{set})){ + my $type = "ins"; + foreach my $x (keys(%{$p})){ + if (($x =~ /^ident_/) && ($p->{$x} ne "")){ + $type = "upd"; + last; + } + } + my $x = $p; + delete $x->{sid}; + delete $x->{set}; + my @sql = (); + if ($type eq "ins"){ + @sql = $db->create_ddl_insert($x); + }else { + @sql = $db->create_ddl_update($x); + } + if (scalar(@sql) > 0 ){ + my $rid = $db->dbquerysorted($sql[0]); + if (keys(%{$rid}) > 0 ){ + $html->{result} = $rid->{0}; + } + } + } + elsif (exists($p->{del})){ + my $x = $p; + delete $x->{sid}; + delete $x->{del}; + my @sql = $db->create_ddl_delete($x); + if (scalar(@sql) > 0 ){ + my $rid = $db->dbexec($sql[0]); + if (keys(%{$rid}) > 0 ){ + $html->{result} = $rid->{0}; + } + } + } + elsif (exists($p->{del2})){ + my $x = $p; + my $schema = "public"; + if (exists($p->{schemata})){ + $schema = $db->securetext($p->{schemata}); + } + my $rid = $db->dbexec("DELETE FROM ".$schema.".".$db->securetext($p->{table})." WHERE id='".$db->securetext($p->{id})."';"); + if (keys(%{$rid}) > 0 ){ + $html->{result} = $rid->{0}; + } + } +} +print JSON::PP::encode_json($html); +# for my $e ( keys %ENV ) { +# print "$e: $ENV{$e}
"; +# } \ No newline at end of file diff --git a/backoffice/api/file.cgi b/backoffice/api/file.cgi new file mode 100755 index 0000000..f0af54d --- /dev/null +++ b/backoffice/api/file.cgi @@ -0,0 +1,136 @@ +#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use CGI; +use CGI::Cookie; +# use CGI::Carp qw/fatalsToBrowser/; +use File::Basename; +use File::Path qw/make_path/; +use JSON::PP; +use Image::Size; +use dksconfig qw/$sitecfg/; +use dksdb; + +use session; +#use sendemail; +my $cgi = new CGI(); +my $scriptpath = $cgi->url(-absolute => 1); +my $p = (); +my @params = $cgi->param(); +foreach my $pe (@params){ + $p->{$pe} = $cgi->param($pe); +} +# if ($sitecfg->{basepath} ne "/"){ +$sitecfg->{docroot} = $sitecfg->{docroot}.substr($sitecfg->{basepath},0,index($sitecfg->{basepath},'backoffice')-1); +# } +my $html->{result} = (); +$p->{sid} = $cgi->cookie($sitecfg->{cookiename}); +my $se = session->new(); +my $sess = $se->getsession($p->{sid}); +print $cgi->header(-type=>"application/json", -charset => "utf-8"); +if ($sess == undef){ + $html->{error} = "No Authorisation"; + print JSON::PP::encode_json($html); + exit(0); +} +$html->{docroot} = $sitecfg->{docroot}; +# $html->{basepath} = $sitecfg->{basepath}; +if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ + + if (exists($p->{fn}) && $p->{fn} eq "list"){ + if (exists($p->{folder})){ + + $p->{folder} =~ s/\.\.\///g; + my $cpath = $sitecfg->{docroot}.'/'.$p->{folder}; + my @items = (); + my $up = (); + # if (index($p->{folder},'/') > 0){ + # $up->{type} = "dir"; + # $up->{name} = ".."; + # $up->{sitepath} = $p->{folder}; + # $up->{path} = $p->{folder}; + # $up->{mimtype} = 'directory'; + # $up->{size} = ''; + # $up->{dimension}; + # $up->{thumb} = ''; + # push (@items,$up); + # } + opendir(DIR,$cpath); + + while (my $d = readdir(DIR)){ + if ($d =~ /^\./){ next; } + if ($d eq "thb"){ next; } + my $e = (); + if (-d $cpath.'/'.$d){ + $e->{type} = "dir"; + $e->{name} = $d; + $e->{sitepath} = $p->{folder}.'/'.$d; + $e->{path} = $p->{folder}.'/'.$d; + $e->{mimtype} = 'directory'; + $e->{size} = ''; + + my $cmd = 'find "'.$cpath.'/'.$d.'" -type f | grep -v \'/thb/\' | wc -l'; + my $dim = `$cmd`; + chomp($dim); + $e->{dimension} = $dim; + + $e->{thumb} = ''; + } + if (-f $cpath.'/'.$d){ + my $cmd = 'file -i "'.$cpath.'/'.$d.'" | awk -F": " \'{ print $2 }\' | awk -F";" \'{ print $1 }\''; + my $mt = `$cmd`; + chomp($mt); + #if (($mt !~ /^image/ ) || ($mt !~ /^application\/pdf/ )) { next; } + if (($mt =~ /^image/ ) || ($mt !~ /^application\/pdf/ )) { + if (! -f $cpath.'/thb/'.$d.'.thb.png'){ + if (! -d $cpath.'/thb'){ + make_path($cpath.'/thb'); + } + system('convert -thumbnail x96 -background white -alpha remove "'.$cpath.'/'.$d.'" "'.$cpath.'/thb/'.$d.'.thb.png"'); + } + if ($mt =~ /^image/ ){ + my ($ix, $iy) = imgsize($cpath.'/'.$d); + $e->{dimension} = $ix."x".$iy; + } + } + my @st = stat($cpath.'/'.$d); + $e->{type} = "file"; + $e->{mimetype} = $mt; + my $s = $st[7]; + my $hrs =""; + if ($s > 1000000024){ + $s = $s/1024; + $s = $s/1024; + $s = $s/1024; + ($hrs) = $s =~ m/^(\d+\.\d\d).*/; + $hrs = $hrs." GB"; + } elsif ($s > 1000024){ + $s = $s/1024; + $s = $s/1024; + ($hrs) = $s =~ m/^(\d+\.\d\d).*/; + $hrs = $hrs." MB"; + } elsif ($s > 1024){ + $s = $s/1024; + ($hrs) = $s =~ m/^(\d+\.\d\d).*/; + $hrs = $hrs." KB"; + } else { + $hrs = $s." B"; + } + $e->{hrsize} = $hrs; + $e->{size} = $st[7]; + $e->{name} = $d; + $e->{sitepath} = $p->{folder}.'/'.$d; + $e->{thumb} = ''; + $e->{path} = '../../../'.$p->{folder}.'/'.$d; + } + push (@items,$e); + } + closedir(DIR); + $html->{result} = \@items; + + } + } +} +print JSON::PP::encode_json($html); diff --git a/backoffice/api/index.cgi b/backoffice/api/index.cgi new file mode 100755 index 0000000..56cf968 --- /dev/null +++ b/backoffice/api/index.cgi @@ -0,0 +1,177 @@ +#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use CGI; +use CGI::Cookie; +#use CGI::Carp qw/fatalsToBrowser/; +use File::Basename; +use Business::Tax::VAT::Validation; +use JSON::PP; + +use dksconfig qw/$sitecfg/; +use dksdb; + +use session; +use sendemail; +my $cgi = new CGI(); +my $scriptpath = $cgi->url(-absolute => 1); +my $p = (); +my @params = $cgi->param(); +foreach my $pe (@params){ + $p->{$pe} = $cgi->param($pe); +} +my $html->{result} = (); +$p->{sid} = $cgi->cookie($sitecfg->{cookiename}); +my $se = session->new(); +my $sess = $se->getsession($p->{sid}); +print $cgi->header(-type=>"application/json", -charset => "utf-8"); +if ($sess == undef){ + $html->{error} = "No Authorisation"; + print JSON::PP::encode_json($html); + exit(0); +} +$html->{p} = $p; +# $html->{sess} =$sess; +#my $datapath = $ENV{"DOCUMENT_ROOT"}.dirname(dirname($scriptpath)).'/data/'; +if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ + my @params = $cgi->param(); + foreach my $pp (@params){ + $p->{$pp} = $cgi->param($pp); + } + + if (exists($p->{fn})){ + + my $db = dksdb->new(); + # if ($p->{fn} eq "savefield"){ + # # $html->{p} = $p; + # $html->{result}->{ident} = $p->{ident}; + # delete $p->{ident}; + # delete $p->{fn}; + # delete $p->{sid}; + # my $retid=undef; + # my $type = "upd"; + # foreach my $px (keys(%{$p})){ + # $html->{result}->{datafield} = $px; + # if (($px =~ /\_id$/) && ($p->{$px} eq "")){ + # $type = "ins"; + + # } + # } + # my @sql = (); + # if ($type eq "ins"){ + # @sql = $db->create_ddl_insert($p); + # } + # else { + # @sql = $db->create_ddl_update($p); + # } + # $html->{result}->{sql} = \@sql; + # foreach my $s (@sql){ + # $retid= $db->dbquerysorted($s); + # } + # $html->{result}->{id} = $retid->{0}; + # #$p->{table},#$p->{field},$p->{value},$p->{id},$p->{type} + # } + + if ($p->{fn} eq "saveform"){ + # $html->{p} = $p; + $html->{result}->{ident} = $p->{ident}; + delete $p->{ident}; + delete $p->{fn}; + delete $p->{sid}; + my $retid=undef; + my $type = "upd"; + foreach my $px (keys(%{$p})){ + $html->{result}->{datafield} = $px; + if (($px =~ /\_id$/) && ($p->{$px} eq "")){ + $type = "ins"; + delete $p->{$px}; + } + } + my @sql = (); + if ($type eq "ins"){ + @sql = $db->create_ddl_insert($p); + } + else { + @sql = $db->create_ddl_update($p); + } + #$html->{sql} = \@sql; + foreach my $s (@sql){ + #if ($type eq "ins"){ + $retid= $db->dbquerysorted($s); + #}else { + + #} + + } + $html->{result}->{id} = $retid->{0}; + #$p->{table},#$p->{field},$p->{value},$p->{id},$p->{type} + } + if($p->{fn} eq "deleterow"){ + delete $p->{fn}; + delete $p->{sid}; + my $retid = undef; + my @sql = $db->create_ddl_delete($p); + foreach my $s (@sql){ + $retid= $db->dbexec($s); + } + $html->{result}->{id} = $retid->{0}; + } + if($p->{fn} eq "savepassword"){ + if ((length($p->{pwd}) > 7) && ($p->{pwd} =~ /\d/) && ($p->{pwd} =~ /[a-z]/) && ($p->{pwd} =~ /[A-Z]/) ){ + $se->savepassword($sess->{id},$p->{pwd}); + $html->{result} = "OK"; + }else { + $html->{result} = "NOT OK"; + } + + } + if ($p->{fn} eq "sendmailvcode"){ + my $vcode = $se->randomstring(6); + $vcode = lc($vcode); + $db->dbexec("UPDATE users set vcode='".$vcode."' where id=".$sess->{id}.";"); + my $eml = sendemail->new(); + my $mret = $eml->sendemail('user_verification',$sess->{id},$p->{mail},{vcode => $vcode},undef); + if ($mret == 0){ + $html->{result}->{vcode} = $vcode; + } else { + $html->{result}->{vcode} = $vcode; + $html->{result}->{error} = $mret; + } + } + if ($p->{fn} eq "savenewemail"){ + $db->dbexec("update users set username='".$p->{email}."' where id=".$sess->{id}." and vcode='".$p->{vcode}."';"); + $html->{result} = "OK"; + } + if($p->{fn} eq "getsitemedia"){ + my $path = dirname(dirname($0)).'/img'; + } + if ($p->{fn} eq "checkvat"){ + my $hvatn=Business::Tax::VAT::Validation->new(); + my $VAT=$p->{vatnumber}; + $VAT =~ s/\s+//g; + if ($hvatn->check($VAT)){ + $html->{result} = $hvatn->informations(); + } else { + $html->{result} = $hvatn->get_last_error; + } + } + if ($p->{fn} eq "getfreeschema"){ + my $cmpy = lc($p->{companyname}); + $cmpy =~ s///; + $cmpy =~ s/[^a-z0-9\-]/\_/g; + $cmpy =~ s/^[\_]+//; + $cmpy =~ s/[\_]+$//; + $cmpy =~ s/^[\_]+/_/; + my $schemasql = "select count(*) as cnt from information_schema.schemata where schema_name='".$db->securetext($p->{schemaname})."';"; + my $dbschema = $db->dbquery($schemasql); + my $dbsnum = ""; + if ($dbschema->{cnt} > 1){ + $dbsnum = int($dbschema->{cnt}) + 1; + } + $html->{result}->{newschema} = $cmpy.$dnsnum; + } + } + +} +print JSON::PP::encode_json($html); diff --git a/backoffice/api/lib/dksconfig.pm b/backoffice/api/lib/dksconfig.pm new file mode 100644 index 0000000..17c9ea8 --- /dev/null +++ b/backoffice/api/lib/dksconfig.pm @@ -0,0 +1,28 @@ +package dksconfig; + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use lib ('./'); +use File::Basename; +use Exporter 'import'; +our @EXPORT_OK = qw($sitecfg); + +our $sitecfg ={ + cookiename => 'potlu', + dbtype => 'PgPP', + dsn => 'DBI:PgPP:dbname=potlu_db;host=DKS-LAPTOP.fritz.box', + #dsn => 'DBI:PgPP:dbname=solarch_db;host=sql629.your-server.de', + dbuser => 'potlu_user', + dbpassword => 'r2btTTRfuJz4whez', + page => 'index.tt', + pagename => 'index', + basepath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname($ENV{"SCRIPT_FILENAME"}):dirname($0)),length($ENV{"DOCUMENT_ROOT"})), + datapath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname($ENV{"SCRIPT_FILENAME"}):dirname($0)),length($ENV{"DOCUMENT_ROOT"})).'/data/', + docroot => $ENV{"DOCUMENT_ROOT"}, + registration_enabled => '0', + default_group => 'users', + sitename => 'Accès - Client' +}; + +1; \ No newline at end of file diff --git a/backoffice/api/lib/dksdb.pm b/backoffice/api/lib/dksdb.pm new file mode 100644 index 0000000..13c1d5a --- /dev/null +++ b/backoffice/api/lib/dksdb.pm @@ -0,0 +1,390 @@ +package dksdb; + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use lib ('./'); +BEGIN { $ENV{DBI_PUREPERL} = 2 } +use DBI; +use File::Basename; + +use Digest::SHA::PurePerl qw(sha256_hex); +use DBD::PgPP; +use URI::Encode qw(uri_encode uri_decode); +use Encode; +use dksconfig qw($sitecfg); +use Text::Unidecode; + + +sub new { + my $class = shift; + my $p = shift; + my $self = bless {}, $class; + return $self; +} + +sub securetext(){ + my $self = shift; + my $text = shift; + $text =~ s/'/''/g; + return $text; +} + +sub dbquery(){ + my $self = shift; + my $stat = shift; + # my $vw_info = shift; + my $retdata = undef; + my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + $stat = encode("utf8", $stat); + # open FILE,">>tmp/sql.log"; + # print FILE "$stat\n"; + # close FILE; + my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquery".$dbh->errstr. "- SQL: ".$stat;; + + + $sth->execute() or return $retdata->{error} = "dbquery: ".$sth->errstr; + + my $data = $sth->fetchrow_hashref(); + foreach my $k (keys %{$data}){ + $retdata->{$k} = decode("utf-8",$data->{$k}); + } + + $sth->finish(); + $dbh->disconnect(); + + return $retdata; +} + +sub dbquerybykey(){ + my $self = shift; + my $key = shift; + my $stat = shift; + #my $retempty = shift; + my $retdata =(); + my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + # $stat = encode("utf8", $stat); + + # open FILE,">>sql.log"; + # print FILE "$stat\n"; + # close FILE; + my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquery: ".$stat; + $sth->execute() or return $retdata->{error} = "dbquery: ".$stat; + while(my $data = $sth->fetchrow_hashref()) + { + if (exists $data->{$key}){ + foreach my $k (keys %{$data}){ + #if ($k ne $key){ + + $retdata->{$data->{$key}}{$k} =decode("utf-8",$data->{$k}); + #} + } + } + } + if (keys(%{$retdata}) == 0){ + $retdata =(); + } + $sth->finish(); + $dbh->disconnect(); + return $retdata; +} + +sub dbquerysorted(){ + my $self = shift; + my $stat = shift; + # my $vw_info = shift; + my $retdata; + my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + # $stat = encode("utf8", $stat); + # open FILE,">>tmp/sql.log"; + # print FILE "\n==\n$stat\n==\n"; + # close FILE; + my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquerysorted ".$dbh->errstr. "- SQL: ".$stat;; + + + $sth->execute() or return $retdata->{error} = "dbquerysorted: ".$sth->errstr; + my $count = 0; + + while(my $data = $sth->fetchrow_hashref()) + { + #$retdata->{$count} = $data; + foreach my $k (keys %{$data}){ + $retdata->{$count}->{$k} = decode("utf-8",$data->{$k}); + } + $count++; + } + + + $sth->finish(); + $dbh->disconnect(); + + return $retdata; +} + +sub dbexec(){ + my $self = shift; + my $stat = shift; + my $retdata; + my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + # $stat = decode("UTF-8", $stat); + # open FILE,">>tmp/sql.log"; + # print FILE "\n==\n$stat\n==\n"; + # close FILE; + my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat;; + $retdata->{success} = $dbh->do($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat; + $dbh->disconnect(); + return $retdata; +} + +sub dbqueryarray(){ + my $self = shift; + my $stat = shift; + my @retdata = (); + my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return ({"error" => "dbqueryarray Connection Error!".$!}); + #$stat = encode("utf8", $stat); + #open FILE,">>/tmp/sql.log"; + #print "$stat\n"; + # close FILE; + my $sth = $dbh->prepare($stat); + + $sth->execute() or print "dbqueryarray: ".$sth->errstr; + my $count = 0; + + while(my $data = $sth->fetchrow_hashref()) + { + my $row = (); + foreach my $k (keys %{$data}){ + $row->{$k} = decode("utf-8",$data->{$k}); + } + push @retdata,$row; + } + + $sth->finish(); + $dbh->disconnect(); + #%retdata = sort {$a <=> $b} keys %retdata; + return \@retdata; +} + + +sub create_ddl_insert(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + + foreach my $f (keys(%{$data})){ + if (($f =~ /\_/) && ($f !~ /^ident_/)){ + my $t = substr($f,0,index($f,"_")); + my $c = substr($f,length($t)+1); + #my ($t,$c) = $f =~ m/(.+)\_(.+)/; + $fields->{$t}->{$c} = $data->{$f}; + } elsif ($f =~ /^ident_/){ + my $f2 = $f; + $f2 =~ s/^ident_//; + + my $t = substr($f2,0,index($f2,"_")); + my $c = substr($f2,length($t)+1); + $fields->{$t}->{$c} = $data->{$f}; + } + + } + + foreach my $tb (keys(%{$fields})){ + my @sqlcol = (); + my @sqlval = (); + foreach my $c (keys(%{$fields->{$tb}})){ + my $v = $fields->{$tb}->{$c}; + $v =~ s/'/''/g; + push (@sqlcol,$c); + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlval,$v); + } + my $schema = "public"; + if (exists($data->{schemata})){ + $schema = $data->{schemata}; + } + push(@ddl,"INSERT INTO ".$schema.".".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).") returning id;"); + } + return @ddl; +} + + +sub create_ddl_update(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + foreach my $f (keys(%{$data})){ + if ($f =~ /^ident_/){ + my $fx = substr($f,6); + my $t = substr($fx,0,index($fx,"_")); + my $c = substr($fx,length($t)+1); + #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/; + $fields->{$t}->{cond}->{$c} = $data->{$f}; + } elsif ( ($f !~ /^ident/) && ($f =~ /.+\_.+/) ){ + my $t = substr($f,0,index($f,"_")); + my $c = substr($f,length($t)+1); + #my ($t,$c) = $f =~ m/^(.+)\_([a-z0-9|\_]+)/; + $fields->{$t}->{fields}->{$c} = $data->{$f}; + } + } + foreach my $tb (keys(%{$fields})){ + my @sqlupd = (); + my @sqlcond = (); + foreach my $c (keys(%{$fields->{$tb}->{fields}})){ + + my $v = $fields->{$tb}->{fields}->{$c}; + $v =~ s/'/''/g; + + if ($c =~ /-/){ + my @jp = split('-',$c); + if ($v eq ''){ + $v = 'null'; + } else { + $v = '"'.$v.'"'; + } + $c = 'jsonb_set(to_jsonb('.$jp[0].'),\'{"'.$jp[1].'"}\',\''.$v.'\')::json'; + push (@sqlupd,$jp[0]."=".$c); + }else { + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlupd,$c."=".$v); + } + + } + foreach my $c (keys(%{$fields->{$tb}->{cond}})){ + my $v = $fields->{$tb}->{cond}->{$c}; + $v =~ s/'/''/g; + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlcond,$c."=".$v); + } + my $schema = "public"; + if (exists($data->{schemata})){ + $schema = $data->{schemata}; + } + push(@ddl,"UPDATE ".$schema.".".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";"); + } + + return @ddl; +} + +sub create_cnt_statement(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + foreach my $f (keys(%{$data})){ + if ($f =~ /^ident_/){ + my $fx = substr($f,6); + my $t = substr($fx,0,index($fx,"_")); + my $c = substr($fx,length($t)+1); + #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/; + $fields->{$t}->{cond}->{$c} = $data->{$f}; + } + } + foreach my $tb (keys(%{$fields})){ + my @sqlcond = (); + foreach my $c (keys(%{$fields->{$tb}->{cond}})){ + my $v = $fields->{$tb}->{cond}->{$c}; + $v =~ s/'/''/g; + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlcond,$c."=".$v); + } + my $schema = "public"; + if (exists($data->{schemata})){ + $schema = $data->{schemata}; + } + push(@ddl,"SELECT count(*) as cnt from ".$schema.".".$tb." WHERE ".join(" AND ",@sqlcond).";"); + } + # open FILE,">>tmp/sql.log"; + # print FILE "\n==\n".join("\n",@ddl)."\n==\n"; + # close FILE; + return @ddl; +} + +sub create_ddl_delete(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + my @refcols = (); + my $refdata = (); + foreach my $f (keys(%{$data})){ + if ($f =~ /^ident_/){ + my ($t,$c) = $f =~ m/ident_(.+)\_(.+)/; + + $fields->{$t}->{cond}->{$c} = $data->{$f}; + push(@refcols,"'".$c.'_'.$t."'"); + $refdata->{$c.'_'.$t} = $data->{$f}; + } + } + foreach my $tb (keys(%{$fields})){ + my @sqlcond = (); + foreach my $c (keys(%{$fields->{$tb}->{cond}})){ + my $v = $fields->{$tb}->{cond}->{$c}; + $v =~ s/'/''/g; + push (@sqlcond,$c."='".$v."'"); + } + my $schema = "public"; + if (exists($data->{schemata})){ + $schema = $data->{schemata}; + } + push(@ddl,"DELETE FROM ".$schema.".".$tb." WHERE ".join(" AND ",@sqlcond).";"); + } + return @ddl; +} + +sub textunidecode(){ + my $self = shift; + my $text = shift; + $text = lc(unidecode(decode("utf-8",$text))); + $text =~ s/^[a-z0-9]//g; + return $text; +} + +sub createdefinedschema(){ + my $self = shift; + my $schematype = shift; + my $schemaname = shift; + my $ddlstr = ""; + my $sc = $self->dbquerysorted("select * from information_schema.schemata where schema_name='".$schemaname."';"); + if (keys(%{$sc}) > 0){ + return; + } + my @schemaddl =(); + open(SCA,$sitecfg->{datapath}.'/schemata/'.$schematype.'.schema.sql'); + while (my $l = ){ + $l =~ s/%%NEWSCHEMA%%/$schemaname/g; + if ($l eq "\n"){ + if ($ddlstr ne ""){ + push(@schemaddl,$ddlstr); + } + $ddlstr = ""; + next; + } + $ddlstr .= $l; + } + close(SCA); + if (scalar(@schemaddl) > 0){ + for(my $d;$ddbexec($schemaddl[$d]); + } + } +} + +1; diff --git a/backoffice/api/lib/dkssavefile.pm b/backoffice/api/lib/dkssavefile.pm new file mode 100644 index 0000000..55c260f --- /dev/null +++ b/backoffice/api/lib/dkssavefile.pm @@ -0,0 +1,49 @@ +package dkssavefile; + + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use lib ('./'); +use MIME::Base64; +use MIME::Types; +use URI; +use Data::Dumper; +use File::Path qw(make_path); + +sub new { + my $class = shift; + my $self = bless {}, $class; + return $self; +} + +sub saveb64toFile(){ + my $self = shift; + # my $fd = shift; + my $filename = shift; + my $sitepath = shift; + my $filepath = shift; + my $data = shift; + my $ds = URI->new($data); + my $mimetype= $ds->media_type(); + my $mt = MIME::Types->new(); + my $sfx = $mt->type($mimetype); + my $ext = $sfx->{MT_extensions}; + my $nfsfx = ""; + if (scalar(@$ext) > 0){ + $nfsfx = @$ext[0]; + } + if (! -d $sitepath.'/'.$filepath){ + make_path($sitepath.'/'.$filepath); + } + open (NF,">".$sitepath.'/'.$filepath.'/'.$filename.'.'.$nfsfx); + binmode(1); + print NF $ds->data(); + close(NF); + if (-e $sitepath.'/'.$filepath.'/'.$filename.'.'.$nfsfx){ + return $filepath.'/'.$filename.'.'.$nfsfx; + } + return ""; +} + +1; \ No newline at end of file diff --git a/backoffice/api/lib/sendemail.pm b/backoffice/api/lib/sendemail.pm new file mode 100644 index 0000000..fd53b2c --- /dev/null +++ b/backoffice/api/lib/sendemail.pm @@ -0,0 +1,127 @@ +package sendemail; + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use lib ('./'); +use Data::Dumper; +use File::Basename qw/dirname basename/; +use dksdb; + +sub new { + my $class = shift; + my $self = bless {}, $class; + $self->{server} = "mail.your-server.de"; + $self->{port} = "587"; + $self->{user} = 'webmaster@solana-architecture.lu'; + $self->{password} = "FLxCtIQs720K8n79"; + $self->{from} = 'webmaster@solana-architecture.lu'; + return $self; +} + +sub sendemail(){ + my $self = shift; + my $template = shift; + my $iduser = shift; + my $sendto = shift; + my $data = shift; + my $attach = shift; + my $body = ""; + my $subject = ""; + my $maildata = (); + my $db = dksdb->new(); + my $send = -1; + my $tmpl = $db->dbquerysorted("select *,ml.mailtemplate from mailtemplates mt join maillayouts ml on (mt.id_maillayout=ml.id) where templatename='".$template."';"); + if (keys(%{$tmpl}) > 0){ + $tmpl = $tmpl->{0}; + } + # open (LOG,">>tmp/sendmail.log"); + # print LOG $ENV{SCRIPT_FILENAME}; + # print LOG "SEND EMAIL:".Dumper($data)."\n"; + # close(LOG); + my $datasql = $tmpl->{'emaildatasql'}; + $data->{id} = $iduser; + foreach my $key (keys(%{$data})){ + my $srch = '%%'.lc($key).'%%'; + my $repl = $data->{$key}; + $datasql =~ s/$srch/$repl/g; + } + # open (LOG,">>tmp/sendmail.log"); + # print LOG "TEMPLATE DATA:".$datasql."\n"; + # close(LOG); + $maildata = $db->dbquerysorted($datasql); + + $body = $tmpl->{'emailtext'}; + $subject = $tmpl->{'mailsubject'}; + foreach my $key (keys(%{$maildata->{0}})){ + $data->{$key} = $maildata->{0}->{$key}; + } + foreach my $key (keys(%{$data})){ + my $srch = '%%'.lc($key).'%%'; + my $repl = $data->{$key}; + $body =~ s/$srch/$repl/g; + $subject =~ s/$srch/$repl/g; + } + my $bodytmpl = $tmpl->{mailtemplate}; + $bodytmpl =~ s/%%BODYCONTENT%%/$body/; + my $siteurl = $ENV{'REQUEST_SCHEME'}.'://'.$ENV{"HTTP_HOST"}; + $bodytmpl =~ s/%%siteurl%%/$siteurl/g; + $bodytmpl =~ s/%%SITEURL%%/$siteurl/g; + $bodytmpl =~ s/\r//g; + #$bodytmpl =~ s/"/\\\"/g; + #PROD REPLACE all not replaced DATA + #$bodytmpl =~ s/%%\w+%%//g; + #$sendto = 'ksaffran@dks.lu'; + # open (LOG,">>tmp/sendmail.log"); + # print LOG "SUBJECT:".$subject."\n"; + # print LOG "BODY TEXT:".$bodytmpl."\n"; + # close(LOG); + if (($bodytmpl ne "") && ($subject ne "") && ($sendto =~ /.+\@.+\..+/)){ + + + my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail'; + my $f = dirname($ENV{SCRIPT_FILENAME}).'/tmp/mailbody_'.$sendto.'.txt'; + $f =~ s/\@/_/g; + if (! -e $binsemail){ + $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/api/sendEmail'; + $f = dirname($ENV{SCRIPT_FILENAME}).'/api/tmp/mailbody_'.$sendto.'.txt'; + $f =~ s/\@/_/g; + if (! -e $binsemail){ + return 256; + } + } + + my $cmd= 'perl "'.$binsemail.'" -f '.$tmpl->{mailfrom}.' '; + $cmd .= ' -s "'.$self->{server}.':'.$self->{port}.'" -xu "'.$self->{user}.'" -xp "'.$self->{password}.'" -q '; + $cmd .= '-o tls=auto '; + $cmd .= '-t "'.$sendto.'" '; + $cmd .= '-u "'.$subject.'" '; + # open (LOG,">>sendmail.log"); + # print LOG $cmd."\n"; + # # print LOG "BODY TEXT:".$bodytmpl."\n"; + # close(LOG); + open(EML,">".$f); + print EML $bodytmpl; + close(EML); + # $cmd .= '-m "'.$bodytmpl.'" '; + if ($attach != undef){ + $cmd .= " -a"; + + foreach my $a (@{$attach}){ + $cmd .= " ".$a." "; + } + } + # open (LOG,">>tmp/sendmail.log"); + # print LOG "SEND EMAIL CMD:".$cmd."\n"; + # close(LOG); + # $cmd =~ s/'/''/g; + $send = system($cmd); + # open (LOG,">>tmp/sendmail.log"); + # print LOG "CMD RETURN NUM:".$send."\n"; + # close(LOG); + unlink($f); + } + return $send; +} + +1; \ No newline at end of file diff --git a/backoffice/api/lib/session.pm b/backoffice/api/lib/session.pm new file mode 100644 index 0000000..b44184f --- /dev/null +++ b/backoffice/api/lib/session.pm @@ -0,0 +1,240 @@ +package session; + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use lib ('./'); +use File::Basename; +use Digest::SHA qw(sha256_hex); +use Data::Dumper; + +use dksdb; +use sendemail; +# use Data::Dumper; + +sub new { + my $class = shift; + my $self = bless {}, $class; + $self->{db} = dksdb->new(); + return $self; +} + +sub checklogin(){ + my $self = shift; + my $login = shift; + my $password = shift; + # open FILE,">>tmp/sql.log"; + # print FILE "pwd: $password\n"; + # close(FILE); + my $pwd = sha256_hex($password); + my $ret->{messagetype} ='w3-red'; + # my $newsid = undef; + $login = lc($login); + $login =~ s/^\s+//; + $login =~ s/\s+$//; + + $ret->{message} = "Mot de passe ou Login pas inconnue!"; + $ret->{messagetype} = "w3-red"; + $ret->{sid} = undef; + my $siddata = $self->{db}->dbquerysorted("select * from checklogin('".$self->{db}->securetext($login)."','".$pwd."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');"); + + if (keys(%{$siddata}) > 0){ + # open FILE,">>tmp/sql.log"; + # print FILE Dumper($siddata); + # close(FILE); + $ret->{sid} = $siddata->{0}->{checklogin}; + } + return $ret; +} + +sub savepassword(){ + my $self = shift; + my $iduser = shift; + my $newpwd = shift; + my $pwd = sha256_hex($newpwd); + $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$iduser.";"); + return 1; +} + +sub passwordforgotten(){ + my $self = shift; + my $email = shift; + my $ret->{messagetype} ='w3-red'; + $ret->{message} = "Onbekannt E-mail!"; + my $sql = "select id,userpassword from users where username='".$self->{db}->securetext($email)."';"; + my $ex = $self->{db}->dbquerysorted($sql); + if (keys(%{$ex}) > 0){ + my $newpwd = $self->randomstring(12); + my $pwd = sha256_hex($newpwd); + $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$ex->{0}->{id}.";"); + my $data->{newpassword} = $newpwd; + my $eml = sendemail->new(); + my $mret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef); + if ($mret != 0){ + $ret->{messagetype} ='w3-red'; + $ret->{message} = "Den Moment ass et leider nët méglech d'Passwuert autmatesch zreckzesetzen,
wend dech w.e.g. via E-Mail un webmaster\@fld.lu!"; + return $ret; + } + $ret->{message} = "Mir hun dir eng E-Mail, matt engem neien Passwuert gescheckt!"; + $ret->{messagetype} = "w3-green"; + } + return $ret; +} + +sub registeruser(){ + my $self = shift; + my $data = shift; + my $ret->{messagetype} ='w3-red'; + $ret->{message} = "Une erreur c'est produite, essayer plus tard!"; + $ret->{page} = "message.tt"; + my @reqfields = ("companies_company","terms","users_email","members_phone","members_surname","members_prename","members_job"); + my $reqf = 1; + foreach my $rf (@reqfields){ + if (!exists($data->{$rf})){ + $reqf = 0; + } + } + if ($reqf == 0){ + $ret->{message} = "Rempissez tous les champs s.v.p.!"; + $ret->{page} = "register.tt"; + return $ret; + } + foreach my $d (%{$data}){ + $data->{$d} = $self->{db}->securetext($data->{$d}); + } + + my $user = $self->{db}->dbquerysorted("select id from users where username='".$data->{users_email}."';"); + if (keys(%{$user}) > 0){ + $ret->{page} = "register.tt"; + $ret->{message} = "Ily existe déjà un utilisateur avec la mème adresse e-mail!"; + return $ret; + } + + my $newcode = $self->randomstring(6); + + my $newuserid = $self->{db}->dbquerysorted("INSERT INTO users (username,vcode) VALUES ('".$data->{users_email}."','".$newcode."') returning id;"); + $self->{db}->dbexec("INSERT INTO useringroups (id_user,id_group) VALUES ('".$newuserid->{0}->{id}."',(select id from usergroups where isdefault=true));"); + my $company = $self->{db}->dbquerysorted("select id from companies where link=unaccent_string('".$data->{companies_company}."');"); + if (keys(%{$company}) == 0 ){ + $company = $self->{db}->dbquerysorted("INSERT INTO companies (company,link) VALUES ('".$data->{companies_company}."',unaccent_string('".$data->{companies_company}."')) returning id;"); + $self->{db}->dbexec("INSERT INTO useringroups (id_user,id_group) VALUES ('".$newuserid->{0}->{id}."',(select id from usergroups where usergroup='company'));"); + } + $self->{db}->dbexec("INSERT INTO members (surname, prename, phone, id_user, id_company, job) VALUES('".$data->{members_surname}."', '".$data->{members_prename}."', '".$data->{members_phone}."', ".$newuserid->{0}->{id}.", ".$company->{0}->{id}.", '".$data->{members_job}."');"); + my $maildata->{vcode} = $newcode; + my $eml = sendemail->new(); + my $mret = $eml->sendemail('user_verification',$newuserid->{0}->{id},$data->{users_email},$maildata,undef); + if ($mret == 0){ + $ret->{message} = "Merci,
nous vous avons envoyé un email,avec un code de vérification!
Entrez ce code ci dessous, pour valider votre compte!
en cas de problèmes envoyer un email à info\@solana-architecture.lu"; + $ret->{messagetype} = "w3-green"; + $ret->{page} = "validationcode.tt"; + } else { + $self->{db}->dbexec("UPDATE users set username='".$data->{users_email}."',vcode=null where id=".$newuserid->{0}->{id}." ;"); + $ret->{message} = "nous ne pouvons pas envoyer un email à '".$data->{users_email}."' ! Si cette email n'existe pas, régisterez-vous avec un email existant!
en cas de problèemes envoyer un email à info\@solana-architecture.lu"; + $ret->{messagetype} = "w3-red"; + $ret->{page} = "register.tt"; + } + #$self->{db}->dbexec("insert into appaccess (id_user) values (".$newuserid->{0}->{id}.");"); + # $ret->{messagetype} = "w3-green"; + + return $ret; +} + +sub validateaccount(){ + my $self = shift; + my $data = shift; + foreach my $d (%{$data}){ + $data->{$d} = $self->{db}->securetext($data->{$d}); + } + + my $ret->{messagetype} ='w3-red'; + my $vcodedata = $self->{db}->dbquerysorted("select id,vcode,username from users where vcode='".$data->{vcode}."';"); + if (keys(%{$vcodedata}) == 0){ + $ret->{message} = "code inconnue!"; + $ret->{page} = "validationcode.tt"; + } + my $newpwd = $self->randomstring(12); + my $pwd = sha256_hex($newpwd); + my $maildata->{password} = $newpwd; + my $eml = sendemail->new(); + my $newuserid = $self->{db}->dbquerysorted("UPDATE users set userpassword='".$pwd."',vcode=null,regcode=null where id=".$vcodedata->{0}->{id}." returning id,username;"); + my $mret = $eml->sendemail('user_registration',$vcodedata->{0}->{id},$vcodedata->{0}->{username},$maildata,undef); + if ($mret == 0){ + $ret->{message} = "Merci,
Nous vous avons envoyé un email avec les données nécessaires pour se connecter!"; + $ret->{messagetype} = "w3-green"; + $ret->{page} = "message.tt"; + } else { + $ret->{message} = "NOus n'avons pas pu vous envoyé un email à '".$newuserid->{0}->{username}."'! Si l'addresse email n'existe pas, essayer avec un email existant!"; + $ret->{page} = "message.tt"; + } + return $ret; +} + +sub getsession($){ + my $self = shift; + my $sid = shift; + my $sql ="select * from public.getsession('".$self->{db}->securetext($sid)."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');"; + my $res= $self->{db}->dbquerysorted($sql); + my $ret = undef; + # open FILE,">>tmp/sql.log"; + # print FILE "GET DB Session\n"; + # print FILE Dumper($res->{0}); + # close(FILE); + if (keys(%{$res}) > 0){ + + return $res->{0}; + } + return $ret; +} + +sub deletesession(){ + my $self = shift; + my $sid = shift; + $self->{db}->dbexec("DELETE FROM sessions where idsession='".$self->{db}->securetext($sid)."';"); +} + +sub randomstring(){ + my $self = shift; + my $num = shift; + my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9); + my $randstring = join '', map $alphanumeric[rand @alphanumeric], 0..$num; + return $randstring; +} + + +# sub deleteprofile(){ +# my $self = shift; +# my $data = shift; +# my $ret->{message} = "mot de passe ou profile inconnue!"; +# $ret->{messagetype} = "danger"; +# if ($data->{id_user} eq ''){ +# $ret->{sid} = undef; +# return $ret; +# } +# my $pwd = sha256_hex($data->{password}); +# my $user = $self->{db}->dbquerysorted("select id from users where id= '".$data->{id_user}."' and userpassword = '".$pwd."';"); +# if (keys(%{$user}) > 0){ +# $self->admindeleteuser($data->{id_user}); +# my $ret->{'message'} = "Votre profile a été supprimé!"; +# $ret->{'messagetype'} = "info"; +# $ret->{sid} = undef; +# } +# return $ret; + +# } + +# sub admindeleteuser(){ +# my $self = shift; +# my $id_user = shift; +# my @dl = ("DELETE FROM public.useringroups WHERE id_uset=".$id_user.";", +# "DELETE FROM public.userclients WHERE id_user=".$id_user.";", +# "DELETE FROM public.appaccess WHERE id_user=".$id_user.";", +# "DELETE FROM public.modulepreferences WHERE id_user=".$id_user.";",, +# "DELETE FROM public.sessions WHERE id_user=".$id_user.";", +# "delete from users where id=".$id_user.";"); +# foreach my $s (@dl){ +# $self->{db}->dbexec($s); +# } +# return 1; +# } + +1; \ No newline at end of file diff --git a/backoffice/api/sendEmail b/backoffice/api/sendEmail new file mode 100644 index 0000000..c639439 --- /dev/null +++ b/backoffice/api/sendEmail @@ -0,0 +1,2235 @@ +#!/usr/bin/perl -w +############################################################################## +## sendEmail +## Written by: Brandon Zehm +## +## License: +## sendEmail (hereafter referred to as "program") is free software; +## you can redistribute it and/or modify it under the terms of the GNU General +## Public License as published by the Free Software Foundation; either version +## 2 of the License, or (at your option) any later version. +## When redistributing modified versions of this source code it is recommended +## that that this disclaimer and the above coder's names are included in the +## modified code. +## +## Disclaimer: +## This program is provided with no warranty of any kind, either expressed or +## implied. It is the responsibility of the user (you) to fully research and +## comprehend the usage of this program. As with any tool, it can be misused, +## either intentionally (you're a vandal) or unintentionally (you're a moron). +## THE AUTHOR(S) IS(ARE) NOT RESPONSIBLE FOR ANYTHING YOU DO WITH THIS PROGRAM +## or anything that happens because of your use (or misuse) of this program, +## including but not limited to anything you, your lawyers, or anyone else +## can dream up. And now, a relevant quote directly from the GPL: +## +## NO WARRANTY +## +## 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +## FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +## OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +## PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +## OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +## TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +## PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +## REPAIR OR CORRECTION. +## +############################################################################## +use strict; +use IO::Socket; + + +######################## +## Global Variables ## +######################## + +my %conf = ( + ## General + "programName" => $0, ## The name of this program + "version" => '1.56', ## The version of this program + "authorName" => 'Brandon Zehm', ## Author's Name + "authorEmail" => 'caspian@dotconf.net', ## Author's Email Address + "timezone" => '+0000', ## We always use +0000 for the time zone + "hostname" => 'changeme', ## Used in printmsg() for all output (is updated later in the script). + "debug" => 0, ## Default debug level + "error" => '', ## Error messages will often be stored here + + ## Logging + "stdout" => 1, + "logging" => 0, ## If this is true the printmsg function prints to the log file + "logFile" => '', ## If this is specified (form the command line via -l) this file will be used for logging. + + ## Network + "server" => 'localhost', ## Default SMTP server + "port" => 25, ## Default port + "bindaddr" => '', ## Default local bind address + "alarm" => '', ## Default timeout for connects and reads, this gets set from $opt{'timeout'} + "tls_client" => 0, ## If TLS is supported by the client (us) + "tls_server" => 0, ## If TLS is supported by the remote SMTP server + + ## Email + "delimiter" => "----MIME delimiter for sendEmail-" ## MIME Delimiter + . rand(1000000), ## Add some randomness to the delimiter + "Message-ID" => rand(1000000) . "-sendEmail", ## Message-ID for email header + +); + + +## This hash stores the options passed on the command line via the -o option. +my %opt = ( + ## Addressing + "reply-to" => '', ## Reply-To field + + ## Message + "message-file" => '', ## File to read message body from + "message-header" => '', ## Additional email header line(s) + "message-format" => 'normal', ## If "raw" is specified the message is sent unmodified + "message-charset" => 'iso-8859-1', ## Message character-set + "message-content-type" => 'auto', ## auto, text, html or an actual string to put into the content-type header. + + ## Network + "timeout" => 60, ## Default timeout for connects and reads, this is copied to $conf{'alarm'} later. + "fqdn" => 'changeme', ## FQDN of this machine, used during SMTP communication (is updated later in the script). + + ## eSMTP + "username" => '', ## Username used in SMTP Auth + "password" => '', ## Password used in SMTP Auth + "tls" => 'auto', ## Enable or disable TLS support. Options: auto, yes, no + +); + +## More variables used later in the program +my $SERVER; +my $CRLF = "\015\012"; +my $subject = ''; +my $header = ''; +my $message = ''; +my $from = ''; +my @to = (); +my @cc = (); +my @bcc = (); +my @attachments = (); +my @attachments_names = (); + +## For printing colors to the console +my ${colorRed} = "\033[31;1m"; +my ${colorGreen} = "\033[32;1m"; +my ${colorCyan} = "\033[36;1m"; +my ${colorWhite} = "\033[37;1m"; +my ${colorNormal} = "\033[m"; +my ${colorBold} = "\033[1m"; +my ${colorNoBold} = "\033[0m"; + +## Don't use shell escape codes on Windows systems +if ($^O =~ /win/i) { + ${colorRed} = ${colorGreen} = ${colorCyan} = ${colorWhite} = ${colorNormal} = ${colorBold} = ${colorNoBold} = ""; +} + +## Load IO::Socket::SSL if it's available +eval { require IO::Socket::SSL; }; +if ($@) { $conf{'tls_client'} = 0; } +else { $conf{'tls_client'} = 1; } + + + + + + +############################# +## ## +## FUNCTIONS ## +## ## +############################# + + + + + +############################################################################################### +## Function: initialize () +## +## Does all the script startup jibberish. +## +############################################################################################### +sub initialize { + + ## Set STDOUT to flush immediatly after each print + $| = 1; + + ## Intercept signals + $SIG{'QUIT'} = sub { quit("EXITING: Received SIG$_[0]", 1); }; + $SIG{'INT'} = sub { quit("EXITING: Received SIG$_[0]", 1); }; + $SIG{'KILL'} = sub { quit("EXITING: Received SIG$_[0]", 1); }; + $SIG{'TERM'} = sub { quit("EXITING: Received SIG$_[0]", 1); }; + + ## ALARM and HUP signals are not supported in Win32 + unless ($^O =~ /win/i) { + $SIG{'HUP'} = sub { quit("EXITING: Received SIG$_[0]", 1); }; + $SIG{'ALRM'} = sub { quit("EXITING: Received SIG$_[0]", 1); }; + } + + ## Fixup $conf{'programName'} + $conf{'programName'} =~ s/(.)*[\/,\\]//; + $0 = $conf{'programName'} . " " . join(" ", @ARGV); + + ## Fixup $conf{'hostname'} and $opt{'fqdn'} + if ($opt{'fqdn'} eq 'changeme') { $opt{'fqdn'} = get_hostname(1); } + if ($conf{'hostname'} eq 'changeme') { $conf{'hostname'} = $opt{'fqdn'}; $conf{'hostname'} =~ s/\..*//; } + + return(1); +} + + + + + + + + + + + + + + + +############################################################################################### +## Function: processCommandLine () +## +## Processes command line storing important data in global vars (usually %conf) +## +############################################################################################### +sub processCommandLine { + + + ############################ + ## Process command line ## + ############################ + + my @ARGS = @ARGV; ## This is so later we can re-parse the command line args later if we need to + my $numargv = @ARGS; + help() unless ($numargv); + my $counter = 0; + + for ($counter = 0; $counter < $numargv; $counter++) { + + if ($ARGS[$counter] =~ /^-h$/i) { ## Help ## + help(); + } + + elsif ($ARGS[$counter] eq "") { ## Ignore null arguments + ## Do nothing + } + + elsif ($ARGS[$counter] =~ /^--help/) { ## Topical Help ## + $counter++; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + helpTopic($ARGS[$counter]); + } + else { + help(); + } + } + + elsif ($ARGS[$counter] =~ /^-o$/i) { ## Options specified with -o ## + $counter++; + ## Loop through each option passed after the -o + while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + + if ($ARGS[$counter] !~ /(\S+)=(\S.*)/) { + printmsg("WARNING => Name/Value pair [$ARGS[$counter]] is not properly formatted", 0); + printmsg("WARNING => Arguments proceeding -o should be in the form of \"name=value\"", 0); + } + else { + if (exists($opt{$1})) { + if ($1 eq 'message-header') { + $opt{$1} .= $2 . $CRLF; + } + else { + $opt{$1} = $2; + } + printmsg("DEBUG => Assigned \$opt{} key/value: $1 => $2", 3); + } + else { + printmsg("WARNING => Name/Value pair [$ARGS[$counter]] will be ignored: unknown key [$1]", 0); + printmsg("HINT => Try the --help option to find valid command line arguments", 1); + } + } + $counter++; + } $counter--; + } + + elsif ($ARGS[$counter] =~ /^-f$/) { ## From ## + $counter++; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { $from = $ARGS[$counter]; } + else { printmsg("WARNING => The argument after -f was not an email address!", 0); $counter--; } + } + + elsif ($ARGS[$counter] =~ /^-t$/) { ## To ## + $counter++; + while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) { + if ($ARGS[$counter] =~ /[;,]/) { + push (@to, split(/[;,]/, $ARGS[$counter])); + } + else { + push (@to,$ARGS[$counter]); + } + $counter++; + } $counter--; + } + + elsif ($ARGS[$counter] =~ /^-cc$/) { ## Cc ## + $counter++; + while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) { + if ($ARGS[$counter] =~ /[;,]/) { + push (@cc, split(/[;,]/, $ARGS[$counter])); + } + else { + push (@cc,$ARGS[$counter]); + } + $counter++; + } $counter--; + } + + elsif ($ARGS[$counter] =~ /^-bcc$/) { ## Bcc ## + $counter++; + while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) { + if ($ARGS[$counter] =~ /[;,]/) { + push (@bcc, split(/[;,]/, $ARGS[$counter])); + } + else { + push (@bcc,$ARGS[$counter]); + } + $counter++; + } $counter--; + } + + elsif ($ARGS[$counter] =~ /^-m$/) { ## Message ## + $counter++; + $message = ""; + while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + if ($message) { $message .= " "; } + $message .= $ARGS[$counter]; + $counter++; + } $counter--; + + ## Replace '\n' with $CRLF. + ## This allows newlines with messages sent on the command line + $message =~ s/\\n/$CRLF/g; + } + + elsif ($ARGS[$counter] =~ /^-u$/) { ## Subject ## + $counter++; + $subject = ""; + while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + if ($subject) { $subject .= " "; } + $subject .= $ARGS[$counter]; + $counter++; + } $counter--; + } + + elsif ($ARGS[$counter] =~ /^-s$/) { ## Server ## + $counter++; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + $conf{'server'} = $ARGS[$counter]; + if ($conf{'server'} =~ /:/) { ## Port ## + ($conf{'server'},$conf{'port'}) = split(":",$conf{'server'}); + } + } + else { printmsg("WARNING - The argument after -s was not the server!", 0); $counter--; } + } + + elsif ($ARGS[$counter] =~ /^-b$/) { ## Bind Address ## + $counter++; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + $conf{'bindaddr'} = $ARGS[$counter]; + } + else { printmsg("WARNING - The argument after -b was not the bindaddr!", 0); $counter--; } + } + + elsif ($ARGS[$counter] =~ /^-a$/) { ## Attachments ## + $counter++; + while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) { + push (@attachments,$ARGS[$counter]); + $counter++; + } $counter--; + } + + elsif ($ARGS[$counter] =~ /^-xu$/) { ## AuthSMTP Username ## + $counter++; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + $opt{'username'} = $ARGS[$counter]; + } + else { + printmsg("WARNING => The argument after -xu was not valid username!", 0); + $counter--; + } + } + + elsif ($ARGS[$counter] =~ /^-xp$/) { ## AuthSMTP Password ## + $counter++; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { + $opt{'password'} = $ARGS[$counter]; + } + else { + printmsg("WARNING => The argument after -xp was not valid password!", 0); + $counter--; + } + } + + elsif ($ARGS[$counter] =~ /^-l$/) { ## Logging ## + $counter++; + $conf{'logging'} = 1; + if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { $conf{'logFile'} = $ARGS[$counter]; } + else { printmsg("WARNING - The argument after -l was not the log file!", 0); $counter--; } + } + + elsif ($ARGS[$counter] =~ s/^-v+//i) { ## Verbosity ## + my $tmp = (length($&) - 1); + $conf{'debug'} += $tmp; + } + + elsif ($ARGS[$counter] =~ /^-q$/) { ## Quiet ## + $conf{'stdout'} = 0; + } + + else { + printmsg("Error: \"$ARGS[$counter]\" is not a recognized option!", 0); + help(); + } + + } + + + + + + + + + ################################################### + ## Verify required variables are set correctly ## + ################################################### + + ## Make sure we have something in $conf{hostname} and $opt{fqdn} + if ($opt{'fqdn'} =~ /\./) { + $conf{'hostname'} = $opt{'fqdn'}; + $conf{'hostname'} =~ s/\..*//; + } + + if (!$conf{'server'}) { $conf{'server'} = 'localhost'; } + if (!$conf{'port'}) { $conf{'port'} = 25; } + if (!$from) { + quit("ERROR => You must specify a 'from' field! Try --help.", 1); + } + if ( ((scalar(@to)) + (scalar(@cc)) + (scalar(@bcc))) <= 0) { + quit("ERROR => You must specify at least one recipient via -t, -cc, or -bcc", 1); + } + + ## Make sure email addresses look OK. + foreach my $addr (@to, @cc, @bcc, $from, $opt{'reply-to'}) { + if ($addr) { + if (!returnAddressParts($addr)) { + printmsg("ERROR => Can't use improperly formatted email address: $addr", 0); + printmsg("HINT => Try viewing the extended help on addressing with \"--help addressing\"", 1); + quit("", 1); + } + } + } + + ## Make sure all attachments exist. + foreach my $file (@attachments) { + if ( (! -f $file) or (! -r $file) ) { + printmsg("ERROR => The attachment [$file] doesn't exist!", 0); + printmsg("HINT => Try specifying the full path to the file or reading extended help with \"--help message\"", 1); + quit("", 1); + } + } + + if ($conf{'logging'} and (!$conf{'logFile'})) { + quit("ERROR => You used -l to enable logging but didn't specify a log file!", 1); + } + + if ( $opt{'username'} ) { + if (!$opt{'password'}) { + ## Prompt for a password since one wasn't specified with the -xp option. + $SIG{'ALRM'} = sub { quit("ERROR => Timeout waiting for password inpupt", 1); }; + alarm(60) if ($^O !~ /win/i); ## alarm() doesn't work in win32 + print "Password: "; + $opt{'password'} = ; chomp $opt{'password'}; + if (!$opt{'password'}) { + quit("ERROR => A username for SMTP authentication was specified, but no password!", 1); + } + } + } + + ## Validate the TLS setting + $opt{'tls'} = lc($opt{'tls'}); + if ($opt{'tls'} !~ /^(auto|yes|no)$/) { + quit("ERROR => Invalid TLS setting ($opt{'tls'}). Must be one of auto, yes, or no.", 1); + } + + ## If TLS is set to "yes", make sure sendEmail loaded the libraries needed. + if ($opt{'tls'} eq 'yes' and $conf{'tls_client'} == 0) { + quit("ERROR => No TLS support! SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)", 1); + } + + ## Return 0 errors + return(0); +} + + + + + + + + + + + + + + + + +## getline($socketRef) +sub getline { + my ($socketRef) = @_; + local ($/) = "\r\n"; + return $$socketRef->getline; +} + + + + +## Receive a (multiline?) SMTP response from ($socketRef) +sub getResponse { + my ($socketRef) = @_; + my ($tmp, $reply); + local ($/) = "\r\n"; + return undef unless defined($tmp = getline($socketRef)); + return("getResponse() socket is not open") unless ($$socketRef->opened); + ## Keep reading lines if it's a multi-line response + while ($tmp =~ /^\d{3}-/o) { + $reply .= $tmp; + return undef unless defined($tmp = getline($socketRef)); + } + $reply .= $tmp; + $reply =~ s/\r?\n$//o; + return $reply; +} + + + + +############################################################################################### +## Function: SMTPchat ( [string $command] ) +## +## Description: Sends $command to the SMTP server (on SERVER) and awaits a successful +## reply form the server. If the server returns an error, or does not reply +## within $conf{'alarm'} seconds an error is generated. +## NOTE: $command is optional, if no command is specified then nothing will +## be sent to the server, but a valid response is still required from the server. +## +## Input: [$command] A (optional) valid SMTP command (ex. "HELO") +## +## +## Output: Returns zero on success, or non-zero on error. +## Error messages will be stored in $conf{'error'} +## A copy of the last SMTP response is stored in the global variable +## $conf{'SMTPchat_response'} +## +## +## Example: SMTPchat ("HELO mail.isp.net"); +############################################################################################### +sub SMTPchat { + my ($command) = @_; + + printmsg("INFO => Sending: \t$command", 1) if ($command); + + ## Send our command + print $SERVER "$command$CRLF" if ($command); + + ## Read a response from the server + $SIG{'ALRM'} = sub { $conf{'error'} = "alarm"; $SERVER->close(); }; + alarm($conf{'alarm'}) if ($^O !~ /win/i); ## alarm() doesn't work in win32; + my $result = $conf{'SMTPchat_response'} = getResponse(\$SERVER); + alarm(0) if ($^O !~ /win/i); ## alarm() doesn't work in win32; + + ## Generate an alert if we timed out + if ($conf{'error'} eq "alarm") { + $conf{'error'} = "ERROR => Timeout while reading from $conf{'server'}:$conf{'port'} There was no response after $conf{'alarm'} seconds."; + return(1); + } + + ## Make sure the server actually responded + if (!$result) { + $conf{'error'} = "ERROR => $conf{'server'}:$conf{'port'} returned a zero byte response to our query."; + return(2); + } + + ## Validate the response + if (evalSMTPresponse($result)) { + ## conf{'error'} will already be set here + return(2); + } + + ## Print the success messsage + printmsg($conf{'error'}, 1); + + ## Return Success + return(0); +} + + + + + + + + + + + + +############################################################################################### +## Function: evalSMTPresponse (string $message ) +## +## Description: Searches $message for either an SMTP success or error code, and returns +## 0 on success, and the actual error code on error. +## +## +## Input: $message Data received from a SMTP server (ex. "220 +## +## +## Output: Returns zero on success, or non-zero on error. +## Error messages will be stored in $conf{'error'} +## +## +## Example: SMTPchat ("HELO mail.isp.net"); +############################################################################################### +sub evalSMTPresponse { + my ($message) = @_; + + ## Validate input + if (!$message) { + $conf{'error'} = "ERROR => No message was passed to evalSMTPresponse(). What happened?"; + return(1) + } + + printmsg("DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in the message: $message ", 3); + + ## Look for a SMTP success code + if ($message =~ /^([23]\d\d)/) { + printmsg("DEBUG => evalSMTPresponse() - Found SMTP success code: $1", 2); + $conf{'error'} = "SUCCESS => Received: \t$message"; + return(0); + } + + ## Look for a SMTP error code + if ($message =~ /^([45]\d\d)/) { + printmsg("DEBUG => evalSMTPresponse() - Found SMTP error code: $1", 2); + $conf{'error'} = "ERROR => Received: \t$message"; + return($1); + } + + ## If no SMTP codes were found return an error of 1 + $conf{'error'} = "ERROR => Received a message with no success or error code. The message received was: $message"; + return(2); + +} + + + + + + + + + + +######################################################### +# SUB: &return_month(0,1,etc) +# returns the name of the month that corrosponds +# with the number. returns 0 on error. +######################################################### +sub return_month { + my $x = $_[0]; + if ($x == 0) { return 'Jan'; } + if ($x == 1) { return 'Feb'; } + if ($x == 2) { return 'Mar'; } + if ($x == 3) { return 'Apr'; } + if ($x == 4) { return 'May'; } + if ($x == 5) { return 'Jun'; } + if ($x == 6) { return 'Jul'; } + if ($x == 7) { return 'Aug'; } + if ($x == 8) { return 'Sep'; } + if ($x == 9) { return 'Oct'; } + if ($x == 10) { return 'Nov'; } + if ($x == 11) { return 'Dec'; } + return (0); +} + + + + + + + + + + + + + + + + +######################################################### +# SUB: &return_day(0,1,etc) +# returns the name of the day that corrosponds +# with the number. returns 0 on error. +######################################################### +sub return_day { + my $x = $_[0]; + if ($x == 0) { return 'Sun'; } + if ($x == 1) { return 'Mon'; } + if ($x == 2) { return 'Tue'; } + if ($x == 3) { return 'Wed'; } + if ($x == 4) { return 'Thu'; } + if ($x == 5) { return 'Fri'; } + if ($x == 6) { return 'Sat'; } + return (0); +} + + + + + + + + + + + + + + + + +############################################################################################### +## Function: returnAddressParts(string $address) +## +## Description: Returns a two element array containing the "Name" and "Address" parts of +## an email address. +## +## Example: "Brandon Zehm " +## would return: ("Brandon Zehm", "caspian@dotconf.net"); +## +## "caspian@dotconf.net" +## would return: ("caspian@dotconf.net", "caspian@dotconf.net") +############################################################################################### +sub returnAddressParts { + my $input = $_[0]; + my $name = ""; + my $address = ""; + + ## Make sure to fail if it looks totally invalid + if ($input !~ /(\S+\@\S+)/) { + $conf{'error'} = "ERROR => The address [$input] doesn't look like a valid email address, ignoring it"; + return(undef()); + } + + ## Check 1, should find addresses like: "Brandon Zehm " + elsif ($input =~ /^\s*(\S(.*\S)?)\s*<(\S+\@\S+)>/o) { + ($name, $address) = ($1, $3); + } + + ## Otherwise if that failed, just get the address: + elsif ($input =~ /<(\S+\@\S+)>/o) { + $name = $address = $1; + } + + ## Or maybe it was formatted this way: caspian@dotconf.net + elsif ($input =~ /(\S+\@\S+)/o) { + $name = $address = $1; + } + + ## Something stupid happened, just return an error. + unless ($name and $address) { + printmsg("ERROR => Couldn't parse the address: $input", 0); + printmsg("HINT => If you think this should work, consider reporting this as a bug to $conf{'authorEmail'}", 1); + return(undef()); + } + + ## Make sure there aren't invalid characters in the address, and return it. + my $ctrl = '\000-\037'; + my $nonASCII = '\x80-\xff'; + if ($address =~ /[<> ,;:"'\[\]\\$ctrl$nonASCII]/) { + printmsg("WARNING => The address [$address] seems to contain invalid characters: continuing anyway", 0); + } + return($name, $address); +} + + + + + + + + + + + + + + + + +############################################################################################### +## Function: base64_encode(string $data, bool $chunk) +## +## Description: Returns $data as a base64 encoded string. +## If $chunk is true, the encoded data is returned in 76 character long lines +## with the final \CR\LF removed. +## +## Note: This is only used from the smtp auth section of code. +## At some point it would be nice to merge the code that encodes attachments and this. +############################################################################################### +sub base64_encode { + my $data = $_[0]; + my $chunk = $_[1]; + my $tmp = ''; + my $base64 = ''; + my $CRLF = "\r\n"; + + ################################### + ## Convert binary data to base64 ## + ################################### + while ($data =~ s/(.{45})//s) { ## Get 45 bytes from the binary string + $tmp = substr(pack('u', $&), 1); ## Convert the binary to uuencoded text + chop($tmp); + $tmp =~ tr|` -_|AA-Za-z0-9+/|; ## Translate from uuencode to base64 + $base64 .= $tmp; + } + + ########################## + ## Encode the leftovers ## + ########################## + my $padding = ""; + if ( ($data) and (length($data) > 0) ) { + $padding = (3 - length($data) % 3) % 3; ## Set flag if binary data isn't divisible by 3 + $tmp = substr(pack('u', $data), 1); ## Convert the binary to uuencoded text + chop($tmp); + $tmp =~ tr|` -_|AA-Za-z0-9+/|; ## Translate from uuencode to base64 + $base64 .= $tmp; + } + + ############################ + ## Fix padding at the end ## + ############################ + $data = ''; + $base64 =~ s/.{$padding}$/'=' x $padding/e if $padding; ## Fix the end padding if flag (from above) is set + if ($chunk) { + while ($base64 =~ s/(.{1,76})//s) { ## Put $CRLF after each 76 characters + $data .= "$1$CRLF"; + } + } + else { + $data = $base64; + } + + ## Remove any trailing CRLF's + $data =~ s/(\r|\n)*$//s; + return($data); +} + + + + + + + + + +######################################################### +# SUB: send_attachment("/path/filename") +# Sends the mime headers and base64 encoded file +# to the email server. +######################################################### +sub send_attachment { + my ($filename) = @_; ## Get filename passed + my (@fields, $y, $filename_name, $encoding, ## Local variables + @attachlines, $content_type); + my $bin = 1; + + @fields = split(/\/|\\/, $filename); ## Get the actual filename without the path + $filename_name = pop(@fields); + push @attachments_names, $filename_name; ## FIXME: This is only used later for putting in the log file + + ########################## + ## Autodetect Mime Type ## + ########################## + + @fields = split(/\./, $filename_name); + $encoding = $fields[$#fields]; + + if ($encoding =~ /txt|text|log|conf|^c$|cpp|^h$|inc|m3u/i) { $content_type = 'text/plain'; } + elsif ($encoding =~ /html|htm|shtml|shtm|asp|php|cfm/i) { $content_type = 'text/html'; } + elsif ($encoding =~ /sh$/i) { $content_type = 'application/x-sh'; } + elsif ($encoding =~ /tcl/i) { $content_type = 'application/x-tcl'; } + elsif ($encoding =~ /pl$/i) { $content_type = 'application/x-perl'; } + elsif ($encoding =~ /js$/i) { $content_type = 'application/x-javascript'; } + elsif ($encoding =~ /man/i) { $content_type = 'application/x-troff-man'; } + elsif ($encoding =~ /gif/i) { $content_type = 'image/gif'; } + elsif ($encoding =~ /jpg|jpeg|jpe|jfif|pjpeg|pjp/i) { $content_type = 'image/jpeg'; } + elsif ($encoding =~ /tif|tiff/i) { $content_type = 'image/tiff'; } + elsif ($encoding =~ /xpm/i) { $content_type = 'image/x-xpixmap'; } + elsif ($encoding =~ /bmp/i) { $content_type = 'image/x-MS-bmp'; } + elsif ($encoding =~ /pcd/i) { $content_type = 'image/x-photo-cd'; } + elsif ($encoding =~ /png/i) { $content_type = 'image/png'; } + elsif ($encoding =~ /aif|aiff/i) { $content_type = 'audio/x-aiff'; } + elsif ($encoding =~ /wav/i) { $content_type = 'audio/x-wav'; } + elsif ($encoding =~ /mp2|mp3|mpa/i) { $content_type = 'audio/x-mpeg'; } + elsif ($encoding =~ /ra$|ram/i) { $content_type = 'audio/x-pn-realaudio'; } + elsif ($encoding =~ /mpeg|mpg/i) { $content_type = 'video/mpeg'; } + elsif ($encoding =~ /mov|qt$/i) { $content_type = 'video/quicktime'; } + elsif ($encoding =~ /avi/i) { $content_type = 'video/x-msvideo'; } + elsif ($encoding =~ /zip/i) { $content_type = 'application/x-zip-compressed'; } + elsif ($encoding =~ /tar/i) { $content_type = 'application/x-tar'; } + elsif ($encoding =~ /jar/i) { $content_type = 'application/java-archive'; } + elsif ($encoding =~ /exe|bin/i) { $content_type = 'application/octet-stream'; } + elsif ($encoding =~ /ppt|pot|ppa|pps|pwz/i) { $content_type = 'application/vnd.ms-powerpoint'; } + elsif ($encoding =~ /mdb|mda|mde/i) { $content_type = 'application/vnd.ms-access'; } + elsif ($encoding =~ /xls|xlt|xlm|xld|xla|xlc|xlw|xll/i) { $content_type = 'application/vnd.ms-excel'; } + elsif ($encoding =~ /doc|dot/i) { $content_type = 'application/msword'; } + elsif ($encoding =~ /rtf/i) { $content_type = 'application/rtf'; } + elsif ($encoding =~ /pdf/i) { $content_type = 'application/pdf'; } + elsif ($encoding =~ /tex/i) { $content_type = 'application/x-tex'; } + elsif ($encoding =~ /latex/i) { $content_type = 'application/x-latex'; } + elsif ($encoding =~ /vcf/i) { $content_type = 'application/x-vcard'; } + else { $content_type = 'application/octet-stream'; } + + + ############################ + ## Process the attachment ## + ############################ + + ##################################### + ## Generate and print MIME headers ## + ##################################### + + $y = "$CRLF--$conf{'delimiter'}$CRLF"; + $y .= "Content-Type: $content_type;$CRLF"; + $y .= " name=\"$filename_name\"$CRLF"; + $y .= "Content-Transfer-Encoding: base64$CRLF"; + $y .= "Content-Disposition: attachment; filename=\"$filename_name\"$CRLF"; + $y .= "$CRLF"; + print $SERVER $y; + + + ########################################################### + ## Convert the file to base64 and print it to the server ## + ########################################################### + + open (FILETOATTACH, $filename) || do { + printmsg("ERROR => Opening the file [$filename] for attachment failed with the error: $!", 0); + return(1); + }; + binmode(FILETOATTACH); ## Hack to make Win32 work + + my $res = ""; + my $tmp = ""; + my $base64 = ""; + while () { ## Read a line from the (binary) file + $res .= $_; + + ################################### + ## Convert binary data to base64 ## + ################################### + while ($res =~ s/(.{45})//s) { ## Get 45 bytes from the binary string + $tmp = substr(pack('u', $&), 1); ## Convert the binary to uuencoded text + chop($tmp); + $tmp =~ tr|` -_|AA-Za-z0-9+/|; ## Translate from uuencode to base64 + $base64 .= $tmp; + } + + ################################ + ## Print chunks to the server ## + ################################ + while ($base64 =~ s/(.{76})//s) { + print $SERVER "$1$CRLF"; + } + + } + + ################################### + ## Encode and send the leftovers ## + ################################### + my $padding = ""; + if ( ($res) and (length($res) >= 1) ) { + $padding = (3 - length($res) % 3) % 3; ## Set flag if binary data isn't divisible by 3 + $res = substr(pack('u', $res), 1); ## Convert the binary to uuencoded text + chop($res); + $res =~ tr|` -_|AA-Za-z0-9+/|; ## Translate from uuencode to base64 + } + + ############################ + ## Fix padding at the end ## + ############################ + $res = $base64 . $res; ## Get left overs from above + $res =~ s/.{$padding}$/'=' x $padding/e if $padding; ## Fix the end padding if flag (from above) is set + if ($res) { + while ($res =~ s/(.{1,76})//s) { ## Send it to the email server. + print $SERVER "$1$CRLF"; + } + } + + close (FILETOATTACH) || do { + printmsg("ERROR - Closing the filehandle for file [$filename] failed with the error: $!", 0); + return(2); + }; + + ## Return 0 errors + return(0); + +} + + + + + + + + + +############################################################################################### +## Function: $string = get_hostname (boot $fqdn) +## +## Description: Tries really hard to returns the short (or FQDN) hostname of the current +## system. Uses techniques and code from the Sys-Hostname module. +## +## Input: $fqdn A true value (1) will cause this function to return a FQDN hostname +## rather than a short hostname. +## +## Output: Returns a string +############################################################################################### +sub get_hostname { + ## Assign incoming parameters to variables + my ( $fqdn ) = @_; + my $hostname = ""; + + ## STEP 1: Get short hostname + + ## Load Sys::Hostname if it's available + eval { require Sys::Hostname; }; + unless ($@) { + $hostname = Sys::Hostname::hostname(); + } + + ## If that didn't get us a hostname, try a few other things + else { + ## Windows systems + if ($^O !~ /win/i) { + if ($ENV{'COMPUTERNAME'}) { $hostname = $ENV{'COMPUTERNAME'}; } + if (!$hostname) { $hostname = gethostbyname('localhost'); } + if (!$hostname) { chomp($hostname = `hostname 2> NUL`) }; + } + + ## Unix systems + else { + local $ENV{PATH} = '/usr/bin:/bin:/usr/sbin:/sbin'; ## Paranoia + + ## Try the environment first (Help! What other variables could/should I be checking here?) + if ($ENV{'HOSTNAME'}) { $hostname = $ENV{'HOSTNAME'}; } + + ## Try the hostname command + eval { local $SIG{__DIE__}; local $SIG{CHLD}; $hostname = `hostname 2>/dev/null`; chomp($hostname); } || + + ## Try POSIX::uname(), which strictly can't be expected to be correct + eval { local $SIG{__DIE__}; require POSIX; $hostname = (POSIX::uname())[1]; } || + + ## Try the uname command + eval { local $SIG{__DIE__}; $hostname = `uname -n 2>/dev/null`; chomp($hostname); }; + + } + + ## If we can't find anything else, return "" + if (!$hostname) { + print "WARNING => No hostname could be determined, please specify one with -o fqdn=FQDN option!\n"; + return("unknown"); + } + } + + ## Return the short hostname + unless ($fqdn) { + $hostname =~ s/\..*//; + return(lc($hostname)); + } + + ## STEP 2: Determine the FQDN + + ## First, if we already have one return it. + if ($hostname =~ /\w\.\w/) { return(lc($hostname)); } + + ## Next try using + eval { $fqdn = (gethostbyname($hostname))[0]; }; + if ($fqdn) { return(lc($fqdn)); } + return(lc($hostname)); +} + + + + + + + + +############################################################################################### +## Function: printmsg (string $message, int $level) +## +## Description: Handles all messages - printing them to the screen only if the messages +## $level is >= the global debug level. If $conf{'logFile'} is defined it +## will also log the message to that file. +## +## Input: $message A message to be printed, logged, etc. +## $level The debug level of the message. If +## not defined 0 will be assumed. 0 is +## considered a normal message, 1 and +## higher is considered a debug message. +## +## Output: Prints to STDOUT +## +## Assumptions: $conf{'hostname'} should be the name of the computer we're running on. +## $conf{'stdout'} should be set to 1 if you want to print to stdout +## $conf{'logFile'} should be a full path to a log file if you want that +## $conf{'debug'} should be an integer between 0 and 10. +## +## Example: printmsg("WARNING: We believe in generic error messages... NOT!", 0); +############################################################################################### +sub printmsg { + ## Assign incoming parameters to variables + my ( $message, $level ) = @_; + + ## Make sure input is sane + $level = 0 if (!defined($level)); + $message =~ s/\s+$//sgo; + $message =~ s/\r?\n/, /sgo; + + ## Continue only if the debug level of the program is >= message debug level. + if ($conf{'debug'} >= $level) { + + ## Get the date in the format: Dec 3 11:14:04 + my ($sec, $min, $hour, $mday, $mon) = localtime(); + $mon = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')[$mon]; + my $date = sprintf("%s %02d %02d:%02d:%02d", $mon, $mday, $hour, $min, $sec); + + ## Print to STDOUT always if debugging is enabled, or if conf{stdout} is true. + if ( ($conf{'debug'} >= 1) or ($conf{'stdout'} == 1) ) { + print "$date $conf{'hostname'} $conf{'programName'}\[$$\]: $message\n"; + } + + ## Print to the log file if $conf{'logging'} is true + if ($conf{'logFile'}) { + if (openLogFile($conf{'logFile'})) { $conf{'logFile'} = ""; printmsg("ERROR => Opening the file [$conf{'logFile'}] for appending returned the error: $!", 1); } + print LOGFILE "$date $conf{'hostname'} $conf{'programName'}\[$$\]: $message\n"; + } + + } + + ## Return 0 errors + return(0); +} + + + + + + + + + + + + +############################################################################################### +## FUNCTION: +## openLogFile ( $filename ) +## +## +## DESCRIPTION: +## Opens the file $filename and attaches it to the filehandle "LOGFILE". Returns 0 on success +## and non-zero on failure. Error codes are listed below, and the error message gets set in +## global variable $!. +## +## +## Example: +## openFile ("/var/log/sendEmail.log"); +## +############################################################################################### +sub openLogFile { + ## Get the incoming filename + my $filename = $_[0]; + + ## Make sure our file exists, and if the file doesn't exist then create it + if ( ! -f $filename ) { + print STDERR "NOTICE: The log file [$filename] does not exist. Creating it now with mode [0600].\n" if ($conf{'stdout'}); + open (LOGFILE, ">>$filename"); + close LOGFILE; + chmod (0600, $filename); + } + + ## Now open the file and attach it to a filehandle + open (LOGFILE,">>$filename") or return (1); + + ## Put the file into non-buffering mode + select LOGFILE; + $| = 1; + select STDOUT; + + ## Return success + return(0); +} + + + + + + + + +############################################################################################### +## Function: read_file (string $filename) +## +## Description: Reads the contents of a file and returns a two part array: +## ($status, $file-contents) +## $status is 0 on success, non-zero on error. +## +## Example: ($status, $file) = read_file("/etc/passwd"); +############################################################################################### +sub read_file { + my ( $filename ) = @_; + + ## If the value specified is a file, load the file's contents + if ( (-e $filename and -r $filename) ) { + my $FILE; + if(!open($FILE, ' ' . $filename)) { + return((1, "")); + } + my $file = ''; + while (<$FILE>) { + $file .= $_; + } + ## Strip an ending \r\n + $file =~ s/\r?\n$//os; + } + return((1, "")); +} + + + + + + + + + +############################################################################################### +## Function: quit (string $message, int $errorLevel) +## +## Description: Exits the program, optionally printing $message. It +## returns an exit error level of $errorLevel to the +## system (0 means no errors, and is assumed if empty.) +## +## Example: quit("Exiting program normally", 0); +############################################################################################### +sub quit { + my ( $message, $errorLevel ) = @_; + $errorLevel = 0 if (!defined($errorLevel)); + + ## Print exit message + if ($message) { + printmsg($message, 0); + } + + ## Exit + exit($errorLevel); +} + + + + + + + + + + + + +############################################################################################### +## Function: help () +## +## Description: For all those newbies ;) +## Prints a help message and exits the program. +## +############################################################################################### +sub help { +exit(1) if (!$conf{'stdout'}); +print <${colorNoBold} + +Synopsis: $conf{'programName'} -f ADDRESS [options] + + ${colorRed}Required:${colorNormal} + -f ADDRESS from (sender) email address + * At least one recipient required via -t, -cc, or -bcc + * Message body required via -m, STDIN, or -o message-file=FILE + + ${colorGreen}Common:${colorNormal} + -t ADDRESS [ADDR ...] to email address(es) + -u SUBJECT message subject + -m MESSAGE message body + -s SERVER[:PORT] smtp mail relay, default is $conf{'server'}:$conf{'port'} + + ${colorGreen}Optional:${colorNormal} + -a FILE [FILE ...] file attachment(s) + -cc ADDRESS [ADDR ...] cc email address(es) + -bcc ADDRESS [ADDR ...] bcc email address(es) + -xu USERNAME username for SMTP authentication + -xp PASSWORD password for SMTP authentication + + ${colorGreen}Paranormal:${colorNormal} + -b BINDADDR[:PORT] local host bind address + -l LOGFILE log to the specified file + -v verbosity, use multiple times for greater effect + -q be quiet (i.e. no STDOUT output) + -o NAME=VALUE advanced options, for details try: --help misc + -o message-content-type= + -o message-file=FILE -o message-format=raw + -o message-header=HEADER -o message-charset=CHARSET + -o reply-to=ADDRESS -o timeout=SECONDS + -o username=USERNAME -o password=PASSWORD + -o tls= -o fqdn=FQDN + + + ${colorGreen}Help:${colorNormal} + --help the helpful overview you're reading now + --help addressing explain addressing and related options + --help message explain message body input and related options + --help networking explain -s, -b, etc + --help output explain logging and other output options + --help misc explain -o options, TLS, SMTP auth, and more + +EOM +exit(1); +} + + + + + + + + + +############################################################################################### +## Function: helpTopic ($topic) +## +## Description: For all those newbies ;) +## Prints a help message and exits the program. +## +############################################################################################### +sub helpTopic { + exit(1) if (!$conf{'stdout'}); + my ($topic) = @_; + + CASE: { + + + + +## ADDRESSING + ($topic eq 'addressing') && do { + print <" + Just Address: "john.doe\@gmail.com" + +The "Full Name" method is useful if you want a name, rather than a plain +email address, to be displayed in the recipient's From, To, or Cc fields +when they view the message. + + +${colorGreen}Multiple Recipients${colorNormal} +The -t, -cc, and -bcc options each accept multiple addresses. They may be +specified by separating them by either a white space, comma, or semi-colon +separated list. You may also specify the -t, -cc, and -bcc options multiple +times, each occurance will append the new recipients to the respective list. + +Examples: +(I used "-t" in these examples, but it can be "-cc" or "-bcc" as well) + + * Space separated list: + -t jane.doe\@yahoo.com "John Doe " + + * Semi-colon separated list: + -t "jane.doe\@yahoo.com; John Doe " + + * Comma separated list: + -t "jane.doe\@yahoo.com, John Doe " + + * Multiple -t, -cc, or -bcc options: + -t "jane.doe\@yahoo.com" -t "John Doe " + + +EOM + last CASE; + }; + + + + + + +## MESSAGE + ($topic eq 'message') && do { + print < + -o message-header=EMAIL HEADER + -o message-charset=CHARSET + -o message-format=raw + +-u SUBJECT + This option allows you to specify the subject for your email message. + It is not required (anymore) that the subject be quoted, although it + is recommended. The subject will be read until an argument starting + with a hyphen (-) is found. + Examples: + -u "Contact information while on vacation" + -u New Microsoft vulnerability discovered + +-m MESSAGE + This option is one of three methods that allow you to specify the message + body for your email. The message may be specified on the command line + with this -m option, read from a file with the -o message-file=FILE + option, or read from STDIN if neither of these options are present. + + It is not required (anymore) that the message be quoted, although it is + recommended. The message will be read until an argument starting with a + hyphen (-) is found. + Examples: + -m "See you in South Beach, Hawaii. -Todd" + -m Please ensure that you upgrade your systems right away + + Multi-line message bodies may be specified with the -m option by putting + a "\\n" into the message. Example: + -m "This is line 1.\\nAnd this is line 2." + + HTML messages are supported, simply begin your message with "" and + sendEmail will properly label the mime header so MUAs properly render + the message. It is currently not possible without "-o message-format=raw" + to send a message with both text and html parts with sendEmail. + +-o message-file=FILE + This option is one of three methods that allow you to specify the message + body for your email. To use this option simply specify a text file + containing the body of your email message. Examples: + -o message-file=/root/message.txt + -o message-file="C:\\Program Files\\output.txt" + +-o message-content-type= + This option allows you to specify the content-type of the email. If your + email message is an html message but is being displayed as a text message + just add "-o message-content-type=html" to the command line to force it + to display as an html message. This actually just changes the Content-Type: + header. Advanced users will be happy to know that if you specify anything + other than the three options listed above it will use that as the vaule + for the Content-Type header. + +-o message-header=EMAIL HEADER + This option allows you to specify additional email headers to be included. + To add more than one message header simply use this option on the command + line more than once. If you specify a message header that sendEmail would + normally generate the one you specified will be used in it's place. + Do not use this unless you know what you are doing! + Example: + To scare a Microsoft Outlook user you may want to try this: + -o message-header="X-Message-Flag: Message contains illegal content" + Example: + To request a read-receipt try this: + -o message-header="Disposition-Notification-To: " + Example: + To set the message priority try this: + -o message-header="X-Priority: 1" + Priority reference: 1=highest, 2=high, 3=normal, 4=low, 5=lowest + +-o message-charset=CHARSET + This option allows you to specify the character-set for the message body. + The default is iso-8859-1. + +-o message-format=raw + This option instructs sendEmail to assume the message (specified with -m, + read from STDIN, or read from the file specified in -o message-file=FILE) + is already a *complete* email message. SendEmail will not generate any + headers and will transmit the message as-is to the remote SMTP server. + Due to the nature of this option the following command line options will + be ignored when this one is used: + -u SUBJECT + -o message-header=EMAIL HEADER + -o message-charset=CHARSET + -a ATTACHMENT + + +${colorGreen}The Message Body${colorNormal} +The email message body may be specified in one of three ways: + 1) Via the -m MESSAGE command line option. + Example: + -m "This is the message body" + + 2) By putting the message body in a file and using the -o message-file=FILE + command line option. + Example: + -o message-file=/root/message.txt + + 3) By piping the message body to sendEmail when nither of the above command + line options were specified. + Example: + grep "ERROR" /var/log/messages | sendEmail -t you\@domain.com ... + +If the message body begins with "" then the message will be treated as +an HTML message and the MIME headers will be written so that a HTML capable +email client will display the message in it's HTML form. +Any of the above methods may be used with the -o message-format=raw option +to deliver an already complete email message. + + +EOM + last CASE; + }; + + + + + + +## MISC + ($topic eq 'misc') && do { + print < + -o timeout=SECONDS + -o fqdn=FQDN + +-a ATTACHMENT [ATTACHMENT ...] + This option allows you to attach any number of files to your email message. + To specify more than one attachment, simply separate each filename with a + space. Example: -a file1.txt file2.txt file3.txt + +-xu USERNAME + Alias for -o username=USERNAME + +-xp PASSWORD + Alias for -o password=PASSWORD + +-o username=USERNAME (synonym for -xu) + These options allow specification of a username to be used with SMTP + servers that require authentication. If a username is specified but a + password is not, you will be prompted to enter one at runtime. + +-o password=PASSWORD (synonym for -xp) + These options allow specification of a password to be used with SMTP + servers that require authentication. If a username is specified but a + password is not, you will be prompted to enter one at runtime. + +-o tls= + This option allows you to specify if TLS (SSL for SMTP) should be enabled + or disabled. The default, auto, will use TLS automatically if your perl + installation has the IO::Socket::SSL and Net::SSLeay modules available, + and if the remote SMTP server supports TLS. To require TLS for message + delivery set this to yes. To disable TLS support set this to no. A debug + level of one or higher will reveal details about the status of TLS. + +-o timeout=SECONDS + This option sets the timeout value in seconds used for all network reads, + writes, and a few other things. + +-o fqdn=FQDN + This option sets the Fully Qualified Domain Name used during the initial + SMTP greeting. Normally this is automatically detected, but in case you + need to manually set it for some reason or get a warning about detection + failing, you can use this to override the default. + + +EOM + last CASE; + }; + + + + + + +## NETWORKING + ($topic eq 'networking') && do { + print < + -o timeout=SECONDS + +-s SERVER[:PORT] + This option allows you to specify the SMTP server sendEmail should + connect to to deliver your email message to. If this option is not + specified sendEmail will try to connect to localhost:25 to deliver + the message. THIS IS MOST LIKELY NOT WHAT YOU WANT, AND WILL LIKELY + FAIL unless you have a email server (commonly known as an MTA) running + on your computer! + Typically you will need to specify your company or ISP's email server. + For example, if you use CableOne you will need to specify: + -s mail.cableone.net + If you have your own email server running on port 300 you would + probably use an option like this: + -s myserver.mydomain.com:300 + If you're a GMail user try: + -s smtp.gmail.com:587 -xu me\@gmail.com -xp PASSWD + +-b BINDADDR[:PORT] + This option allows you to specify the local IP address (and optional + tcp port number) for sendEmail to bind to when connecting to the remote + SMTP server. This useful for people who need to send an email from a + specific network interface or source address and are running sendEmail on + a firewall or other host with several network interfaces. + +-o tls= + This option allows you to specify if TLS (SSL for SMTP) should be enabled + or disabled. The default, auto, will use TLS automatically if your perl + installation has the IO::Socket::SSL and Net::SSLeay modules available, + and if the remote SMTP server supports TLS. To require TLS for message + delivery set this to yes. To disable TLS support set this to no. A debug + level of one or higher will reveal details about the status of TLS. + +-o timeout=SECONDS + This option sets the timeout value in seconds used for all network reads, + writes, and a few other things. + + +EOM + last CASE; + }; + + + + + + +## OUTPUT + ($topic eq 'output') && do { + print < The help topic specified is not valid!", 1); + }; + +exit(1); +} + + + + + + + + + + + + + + + + + + + + + + +############################# +## ## +## MAIN PROGRAM ## +## ## +############################# + + +## Initialize +initialize(); + +## Process Command Line +processCommandLine(); +$conf{'alarm'} = $opt{'timeout'}; + +## Abort program after $conf{'alarm'} seconds to avoid infinite hangs +alarm($conf{'alarm'}) if ($^O !~ /win/i); ## alarm() doesn't work in win32 + + + + +################################################### +## Read $message from STDIN if -m was not used ## +################################################### + +if (!($message)) { + ## Read message body from a file specified with -o message-file= + if ($opt{'message-file'}) { + if (! -e $opt{'message-file'}) { + printmsg("ERROR => Message body file specified [$opt{'message-file'}] does not exist!", 0); + printmsg("HINT => 1) check spelling of your file; 2) fully qualify the path; 3) doubble quote it", 1); + quit("", 1); + } + if (! -r $opt{'message-file'}) { + printmsg("ERROR => Message body file specified can not be read due to restricted permissions!", 0); + printmsg("HINT => Check permissions on file specified to ensure it can be read", 1); + quit("", 1); + } + if (!open(MFILE, "< " . $opt{'message-file'})) { + printmsg("ERROR => Error opening message body file [$opt{'message-file'}]: $!", 0); + quit("", 1); + } + while () { + $message .= $_; + } + close(MFILE); + } + + ## Read message body from STDIN + else { + alarm($conf{'alarm'}) if ($^O !~ /win/i); ## alarm() doesn't work in win32 + if ($conf{'stdout'}) { + print "Reading message body from STDIN because the '-m' option was not used.\n"; + print "If you are manually typing in a message:\n"; + print " - First line must be received within $conf{'alarm'} seconds.\n" if ($^O !~ /win/i); + print " - End manual input with a CTRL-D on its own line.\n\n" if ($^O !~ /win/i); + print " - End manual input with a CTRL-Z on its own line.\n\n" if ($^O =~ /win/i); + } + while () { ## Read STDIN into $message + $message .= $_; + alarm(0) if ($^O !~ /win/i); ## Disable the alarm since at least one line was received + } + printmsg("Message input complete.", 0); + } +} + +## Replace bare LF's with CRLF's (\012 should always have \015 with it) +$message =~ s/(\015)?(\012|$)/\015\012/g; + +## Replace bare CR's with CRLF's (\015 should always have \012 with it) +$message =~ s/(\015)(\012|$)?/\015\012/g; + +## Check message for bare periods and encode them +$message =~ s/(^|$CRLF)(\.{1})($CRLF|$)/$1.$2$3/g; + +## Get the current date for the email header +my ($sec,$min,$hour,$mday,$mon,$year,$day) = gmtime(); +$year += 1900; $mon = return_month($mon); $day = return_day($day); +my $date = sprintf("%s, %s %s %d %.2d:%.2d:%.2d %s",$day, $mday, $mon, $year, $hour, $min, $sec, $conf{'timezone'}); + + + + +################################## +## Connect to the SMTP server ## +################################## +printmsg("DEBUG => Connecting to $conf{'server'}:$conf{'port'}", 1); +$SIG{'ALRM'} = sub { + printmsg("ERROR => Timeout while connecting to $conf{'server'}:$conf{'port'} There was no response after $conf{'alarm'} seconds.", 0); + printmsg("HINT => Try specifying a different mail relay with the -s option.", 1); + quit("", 1); +}; +alarm($conf{'alarm'}) if ($^O !~ /win/i); ## alarm() doesn't work in win32; +$SERVER = IO::Socket::INET->new( PeerAddr => $conf{'server'}, + PeerPort => $conf{'port'}, + LocalAddr => $conf{'bindaddr'}, + Proto => 'tcp', + Autoflush => 1, + timeout => $conf{'alarm'}, +); +alarm(0) if ($^O !~ /win/i); ## alarm() doesn't work in win32; + +## Make sure we got connected +if ( (!$SERVER) or (!$SERVER->opened()) ) { + printmsg("ERROR => Connection attempt to $conf{'server'}:$conf{'port'} failed: $@", 0); + printmsg("HINT => Try specifying a different mail relay with the -s option.", 1); + quit("", 1); +} + +## Save our IP address for later +$conf{'ip'} = $SERVER->sockhost(); +printmsg("DEBUG => My IP address is: $conf{'ip'}", 1); + + + + + + + +######################### +## Do the SMTP Dance ## +######################### + +## Read initial greeting to make sure we're talking to a live SMTP server +if (SMTPchat()) { quit($conf{'error'}, 1); } + +## We're about to use $opt{'fqdn'}, make sure it isn't empty +if (!$opt{'fqdn'}) { + ## Ok, that means we couldn't get a hostname, how about using the IP address for the HELO instead + $opt{'fqdn'} = "[" . $conf{'ip'} . "]"; +} + +## EHLO +if (SMTPchat('EHLO ' . $opt{'fqdn'})) { + printmsg($conf{'error'}, 0); + printmsg("NOTICE => EHLO command failed, attempting HELO instead"); + if (SMTPchat('HELO ' . $opt{'fqdn'})) { quit($conf{'error'}, 1); } + if ( $opt{'username'} and $opt{'password'} ) { + printmsg("WARNING => The mail server does not support SMTP authentication!", 0); + } +} +else { + + ## Determin if the server supports TLS + if ($conf{'SMTPchat_response'} =~ /STARTTLS/) { + $conf{'tls_server'} = 1; + printmsg("DEBUG => The remote SMTP server supports TLS :)", 2); + } + else { + $conf{'tls_server'} = 0; + printmsg("DEBUG => The remote SMTP server does NOT support TLS :(", 2); + } + + ## Start TLS if possible + if ($conf{'tls_server'} == 1 and $conf{'tls_client'} == 1 and $opt{'tls'} =~ /^(yes|auto)$/) { + printmsg("DEBUG => Starting TLS", 2); + if (SMTPchat('STARTTLS')) { quit($conf{'error'}, 1); } + if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv3:!SSLv2', , SSL_verify_mode => 0)) { + quit("ERROR => TLS setup failed: " . IO::Socket::SSL::errstr(), 1); + } + printmsg("DEBUG => TLS: Using cipher: ". $SERVER->get_cipher(), 3); + printmsg("DEBUG => TLS session initialized :)", 1); + + ## Restart our SMTP session + if (SMTPchat('EHLO ' . $opt{'fqdn'})) { quit($conf{'error'}, 1); } + } + elsif ($opt{'tls'} eq 'yes' and $conf{'tls_server'} == 0) { + quit("ERROR => TLS not possible! Remote SMTP server, $conf{'server'}, does not support it.", 1); + } + + + ## Do SMTP Auth if required + if ( $opt{'username'} and $opt{'password'} ) { + if ($conf{'SMTPchat_response'} !~ /AUTH\s/) { + printmsg("NOTICE => Authentication not supported by the remote SMTP server!", 0); + } + else { + my $auth_succeeded = 0; + my $mutual_method = 0; + + # ## SASL CRAM-MD5 authentication method + # if ($conf{'SMTPchat_response'} =~ /\bCRAM-MD5\b/i) { + # printmsg("DEBUG => SMTP-AUTH: Using CRAM-MD5 authentication method", 1); + # if (SMTPchat('AUTH CRAM-MD5')) { quit($conf{'error'}, 1); } + # + # ## FIXME!! + # + # printmsg("DEBUG => User authentication was successful", 1); + # } + + ## SASL LOGIN authentication method + if ($auth_succeeded == 0 and $conf{'SMTPchat_response'} =~ /\bLOGIN\b/i) { + $mutual_method = 1; + printmsg("DEBUG => SMTP-AUTH: Using LOGIN authentication method", 1); + if (!SMTPchat('AUTH LOGIN')) { + if (!SMTPchat(base64_encode($opt{'username'}))) { + if (!SMTPchat(base64_encode($opt{'password'}))) { + $auth_succeeded = 1; + printmsg("DEBUG => User authentication was successful (Method: LOGIN)", 1); + } + } + } + if ($auth_succeeded == 0) { + printmsg("DEBUG => SMTP-AUTH: LOGIN authenticaion failed.", 1); + } + } + + ## SASL PLAIN authentication method + if ($auth_succeeded == 0 and $conf{'SMTPchat_response'} =~ /\bPLAIN\b/i) { + $mutual_method = 1; + printmsg("DEBUG => SMTP-AUTH: Using PLAIN authentication method", 1); + if (SMTPchat('AUTH PLAIN ' . base64_encode("$opt{'username'}\0$opt{'username'}\0$opt{'password'}"))) { + printmsg("DEBUG => SMTP-AUTH: PLAIN authenticaion failed.", 1); + } + else { + $auth_succeeded = 1; + printmsg("DEBUG => User authentication was successful (Method: PLAIN)", 1); + } + } + + ## If none of the authentication methods supported by sendEmail were supported by the server, let the user know + if ($mutual_method == 0) { + printmsg("WARNING => SMTP-AUTH: No mutually supported authentication methods available", 0); + } + + ## If we didn't get authenticated, log an error message and exit + if ($auth_succeeded == 0) { + quit("ERROR => ERROR => SMTP-AUTH: Authentication to $conf{'server'}:$conf{'port'} failed.", 1); + } + } + } +} + +## MAIL FROM +if (SMTPchat('MAIL FROM:<' .(returnAddressParts($from))[1]. '>')) { quit($conf{'error'}, 1); } + +## RCPT TO +my $oneRcptAccepted = 0; +foreach my $rcpt (@to, @cc, @bcc) { + my ($name, $address) = returnAddressParts($rcpt); + if (SMTPchat('RCPT TO:<' . $address . '>')) { + printmsg("WARNING => The recipient <$address> was rejected by the mail server, error follows:", 0); + $conf{'error'} =~ s/^ERROR/WARNING/o; + printmsg($conf{'error'}, 0); + } + elsif ($oneRcptAccepted == 0) { + $oneRcptAccepted = 1; + } +} +## If no recipients were accepted we need to exit with an error. +if ($oneRcptAccepted == 0) { + quit("ERROR => Exiting. No recipients were accepted for delivery by the mail server.", 1); +} + +## DATA +if (SMTPchat('DATA')) { quit($conf{'error'}, 1); } + + +############################### +## Build and send the body ## +############################### +printmsg("INFO => Sending message body",1); + +## If the message-format is raw just send the message as-is. +if ($opt{'message-format'} =~ /^raw$/i) { + print $SERVER $message; +} + +## If the message-format isn't raw, then build and send the message, +else { + + ## Message-ID: + if ($opt{'message-header'} !~ /^Message-ID:/iom) { + $header .= 'Message-ID: <' . $conf{'Message-ID'} . '@' . $conf{'hostname'} . '>' . $CRLF; + } + + ## From: "Name" (the pointless test below is just to keep scoping correct) + if ($from and $opt{'message-header'} !~ /^From:/iom) { + my ($name, $address) = returnAddressParts($from); + $header .= 'From: "' . $name . '" <' . $address . '>' . $CRLF; + } + + ## Reply-To: + if ($opt{'reply-to'} and $opt{'message-header'} !~ /^Reply-To:/iom) { + my ($name, $address) = returnAddressParts($opt{'reply-to'}); + $header .= 'Reply-To: "' . $name . '" <' . $address . '>' . $CRLF; + } + + ## To: "Name" + if ($opt{'message-header'} =~ /^To:/iom) { + ## The user put the To: header in via -o message-header - dont do anything + } + elsif (scalar(@to) > 0) { + $header .= "To:"; + for (my $a = 0; $a < scalar(@to); $a++) { + my $msg = ""; + + my ($name, $address) = returnAddressParts($to[$a]); + $msg = " \"$name\" <$address>"; + + ## If we're not on the last address add a comma to the end of the line. + if (($a + 1) != scalar(@to)) { + $msg .= ","; + } + + $header .= $msg . $CRLF; + } + } + ## We always want a To: line so if the only recipients were bcc'd they don't see who it was sent to + else { + $header .= "To: \"Undisclosed Recipients\" <>$CRLF"; + } + + if (scalar(@cc) > 0 and $opt{'message-header'} !~ /^Cc:/iom) { + $header .= "Cc:"; + for (my $a = 0; $a < scalar(@cc); $a++) { + my $msg = ""; + + my ($name, $address) = returnAddressParts($cc[$a]); + $msg = " \"$name\" <$address>"; + + ## If we're not on the last address add a comma to the end of the line. + if (($a + 1) != scalar(@cc)) { + $msg .= ","; + } + + $header .= $msg . $CRLF; + } + } + + if ($opt{'message-header'} !~ /^Subject:/iom) { + $header .= 'Subject: ' . $subject . $CRLF; ## Subject + } + if ($opt{'message-header'} !~ /^Date:/iom) { + $header .= 'Date: ' . $date . $CRLF; ## Date + } + if ($opt{'message-header'} !~ /^X-Mailer:/iom) { + $header .= 'X-Mailer: sendEmail-'.$conf{'version'}.$CRLF; ## X-Mailer + } + ## I wonder if I should put this in by default? + # if ($opt{'message-header'} !~ /^X-Originating-IP:/iom) { + # $header .= 'X-Originating-IP: ['.$conf{'ip'}.']'.$CRLF; ## X-Originating-IP + # } + + ## Encode all messages with MIME. + if ($opt{'message-header'} !~ /^MIME-Version:/iom) { + $header .= "MIME-Version: 1.0$CRLF"; + } + if ($opt{'message-header'} !~ /^Content-Type:/iom) { + my $content_type = 'multipart/mixed'; + if (scalar(@attachments) == 0) { $content_type = 'multipart/related'; } + $header .= "Content-Type: $content_type; boundary=\"$conf{'delimiter'}\"$CRLF"; + } + + ## Send additional message header line(s) if specified + if ($opt{'message-header'}) { + $header .= $opt{'message-header'}; + } + + ## Send the message header to the server + print $SERVER $header . $CRLF; + + ## Start sending the message body to the server + print $SERVER "This is a multi-part message in MIME format. To properly display this message you need a MIME-Version 1.0 compliant Email program.$CRLF"; + print $SERVER "$CRLF"; + + + ## Send message body + print $SERVER "--$conf{'delimiter'}$CRLF"; + ## Send a message content-type header: + ## If the message contains HTML... + if ($opt{'message-content-type'} eq 'html' or ($opt{'message-content-type'} eq 'auto' and $message =~ /^\s*( 0) { + ## Disable the alarm so people on modems can send big attachments + alarm(0) if ($^O !~ /win/i); ## alarm() doesn't work in win32 + + ## Send the attachments + foreach my $filename (@attachments) { + ## This is check 2, we already checked this above, but just in case... + if ( ! -f $filename ) { + printmsg("ERROR => The file [$filename] doesn't exist! Email will be sent, but without that attachment.", 0); + } + elsif ( ! -r $filename ) { + printmsg("ERROR => Couldn't open the file [$filename] for reading: $! Email will be sent, but without that attachment.", 0); + } + else { + printmsg("DEBUG => Sending the attachment [$filename]", 1); + send_attachment($filename); + } + } + } + + + ## End the mime encoded message + print $SERVER "$CRLF--$conf{'delimiter'}--$CRLF"; +} + + +## Tell the server we are done sending the email +print $SERVER "$CRLF.$CRLF"; +if (SMTPchat()) { quit($conf{'error'}, 1); } + + + +#################### +# We are done!!! # +#################### + +## Disconnect from the server (don't SMTPchat(), it breaks when using TLS) +print $SERVER "QUIT$CRLF"; +close $SERVER; + + + + + + +####################################### +## Generate exit message/log entry ## +####################################### + +if ($conf{'debug'} or $conf{'logging'}) { + printmsg("Generating a detailed exit message", 3); + + ## Put the message together + my $output = "Email was sent successfully! From: <" . (returnAddressParts($from))[1] . "> "; + + if (scalar(@to) > 0) { + $output .= "To: "; + for ($a = 0; $a < scalar(@to); $a++) { + $output .= "<" . (returnAddressParts($to[$a]))[1] . "> "; + } + } + if (scalar(@cc) > 0) { + $output .= "Cc: "; + for ($a = 0; $a < scalar(@cc); $a++) { + $output .= "<" . (returnAddressParts($cc[$a]))[1] . "> "; + } + } + if (scalar(@bcc) > 0) { + $output .= "Bcc: "; + for ($a = 0; $a < scalar(@bcc); $a++) { + $output .= "<" . (returnAddressParts($bcc[$a]))[1] . "> "; + } + } + $output .= "Subject: [$subject] " if ($subject); + if (scalar(@attachments_names) > 0) { + $output .= "Attachment(s): "; + foreach(@attachments_names) { + $output .= "[$_] "; + } + } + $output .= "Server: [$conf{'server'}:$conf{'port'}]"; + + +###################### +# Exit the program # +###################### + + ## Print / Log the detailed message + quit($output, 0); +} +else { + ## Or the standard message + quit("Email was sent successfully!", 0); +} + diff --git a/backoffice/api/tmp/sql.log b/backoffice/api/tmp/sql.log new file mode 100644 index 0000000..fd65884 --- /dev/null +++ b/backoffice/api/tmp/sql.log @@ -0,0 +1,20 @@ + +== +DELETE FROM portanova. WHERE id='3'; +== + +== +DELETE FROM portanova.workplans WHERE id='3'; +== + +== +DELETE FROM portanova.workplans WHERE id='2'; +== + +== +DELETE FROM portanova.workplans WHERE id='4'; +== + +== +DELETE FROM portanova.workplans WHERE id='5'; +== diff --git a/backoffice/api/upload.cgi b/backoffice/api/upload.cgi new file mode 100755 index 0000000..194fca8 --- /dev/null +++ b/backoffice/api/upload.cgi @@ -0,0 +1,242 @@ +#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl + +use strict; +use lib ('./lib/perl5'); +use lib ('./lib'); +use CGI; +use CGI::Cookie; +#use CGI::Carp qw/fatalsToBrowser/; +use File::Basename; +use File::Path qw/make_path/; +use JSON::PP; +use Image::Size; +use dksconfig qw/$sitecfg/; +use dksdb; + +use session; +use sendemail; +my $cgi = new CGI(); +my $scriptpath = $cgi->url(-absolute => 1); +my $p = (); +my @params = $cgi->param(); +if ($cgi->request_method() eq "POST"){ + foreach my $pe (@params){ + $p->{$pe} = $cgi->param($pe); + } +} +my $html->{result} = (); +$p->{sid} = $cgi->cookie($sitecfg->{cookiename}); +my $se = session->new(); +my $sess = $se->getsession($p->{sid}); +print $cgi->header(-type=>"application/json", -charset => "utf-8");s +if ($sess == undef){ + $html->{error} = "No Authorisation"; + print JSON::PP::encode_json($html); + exit(0); +} +my $utime = time(); +my $db = dksdb->new(); +my $basepath = dirname(dirname($ENV{SCRIPT_FILENAME})); +if ($p->{fn}){ + if ($p->{fn} eq "setsubmission"){ + select * from cdms where id_project= + #select * from vw_submission where id_project= and is_cdm= + if (exists($p->{xlsxfile}) && $p->{xlsxfile} ne ""){ + my $fh = $cgi->upload('file'); + open(NF,">".$basepath.'/'.$filepath); + binmode NF; + while (<$fh>) { + print NF; + } + close(NF); + } + if (exists($p->{pdffile}) && $p->{pdffile} ne ""){ + my $fh = $cgi->upload('file'); + open(NF,">".$basepath.'/'.$filepath); + binmode NF; + while (<$fh>) { + print NF; + } + close(NF); + } + if (exists($p->{otherfile}) && $p->{otherfile} ne ""){ + my $fh = $cgi->upload('file'); + open(NF,">".$basepath.'/'.$filepath); + binmode NF; + while (<$fh>) { + print NF; + } + close(NF); + } + + } + + # my $filepath = ""; + # my $suffix = substr($p->{file},rindex($p->{file},'.')+1); + # if ($p->{filetype} eq "download_document"){ + # $filepath = 'data/documents/'.$p->{file}; + # } + # if ($p->{filetype} eq "news_image"){ + # if ($suffix eq 'jpg' || $suffix eq 'png'){ + # $filepath = '../media/news/'.$p->{file}; + # $p->{relpath} = 'media/news/'.$p->{file}; + # } + # } + #mogrify -thumbnail x300 -background white *.png + #ls -1 members_sized/*.png | awk -F\/ '{print "composite -gravity southeast wm_fld.png members_sized/"$(NF)" members/"$(NF)}' | sh + # if ($p->{upload_filetype} eq "new_profile_photo"){ + # my $sql = "select link from members where id=".$p->{id_member}.";"; + # my $ml = $db->dbquerysorted($sql); + # $filepath = 'data/members/'.$ml->{0}->{link}.'/'.$ml->{0}->{link}.'_new.'.$suffix; + # } elsif ($p->{upload_filetype} eq "profile_photo"){ + # my $sql = "select link from members where id=".$p->{id_member}.";"; + # my $ml = $db->dbquerysorted($sql); + # $filepath = 'data/members/'.$ml->{0}->{link}.'/'.$ml->{0}->{link}.'_new.'.$suffix; + # } elsif ($p->{upload_filetype} eq "spillbou"){ + # $filepath = 'data/championnat/'.$p->{season}.'_'.$p->{playday}.'_'.$p->{team}.'.'.$suffix; + # } elsif ($p->{upload_filetype} eq "member_document"){ + # my $sql = "select link from members where id=".$p->{id_member}.";"; + # my $ml = $db->dbquerysorted($sql); + # $filepath = 'data/members/'.$ml->{0}->{link}.'/'.$p->{upload_file}.'_'.$utime.$suffix; + # } elsif ($p->{upload_filetype} eq "clublogo_new"){ + # my $sql = "select link from clubs where id=".$p->{id_club}.";"; + # my $cl = $db->dbquerysorted($sql); + # $filepath = 'data/clubs/'.$cl->{0}->{link}.'/'.$cl->{0}->{link}.'_new.'.$suffix; + # } elsif ($p->{upload_filetype} eq "clublogo"){ + # my $sql = "select link from clubs where id=".$p->{id_club}.";"; + # my $cl = $db->dbquerysorted($sql); + # $filepath = 'data/clubs/'.$cl->{0}->{link}.'/'.$cl->{0}->{link}.'.'.$suffix; + # }elsif ($p->{upload_filetype} eq "website_image"){ + # $basepath = $ENV{"DOCUMENT_ROOT"}; + # $filepath = 'images/'.$p->{folder}.'/'.$p->{upload_file}; +# if ($filepath ne ""){ +# $p->{path} = $basepath.'/'.$filepath; +# $p->{suffix} = $suffix; +# my $fh = $cgi->upload('file'); +# open(NF,">".$basepath.'/'.$filepath); +# binmode NF; +# while (<$fh>) { +# print NF; +# } +# close(NF); +# if ($p->{filetype} eq "download_document"){ +# if ($suffix eq 'png' || $suffix eq 'jpg' || $suffix eq 'pdf'){ +# system('convert -thumbnail x128 -background white -alpha remove "'.$basepath.'/'.$filepath.'" "'.$basepath.'/thumb/'.$filepath.'.thumb.png"'); +# } + +# if ($p->{row_id} eq ""){ +# my $dx = $db->dbquerysorted("select id from documents where filename='".basename($filepath)."' and folder='documents'"); +# if (keys(%{$dx}) == 0){ +# my $sql = "INSERT INTO documents (filename,folder,filetype) VALUES ('".basename($filepath)."','documents','".$suffix."');"; +# $db->dbexec($sql); +# } +# } +# } +# if ($p->{filetype} eq "news_image"){ +# my ($pwidth,$pheight) =imgsize($p->{path}); +# my $width=0; +# my $height =0; +# my $density = 72; +# if ($pwidth>700){ +# $width = 700; +# } elsif ($height > 380) { +# $height = 380; +# } +# if ($height == 0){ +# $height = ($pheight/$pwidth) * $width; +# } +# elsif ($width == 0) { +# $width = ($pwidth/$pheight) * $height; +# } +# if ($height > 380){ +# $height = 380; +# $width = ($width/$height) * $height; +# } +# system("mogrify -resize ".$width."x".$height." -density ".$density." ".$p->{path}); +# } + +# # if ($p->{upload_filetype} eq "new_profile_photo"){ +# # #convert! +# # $db->dbexec("update members set new_profile_photo='".$filepath."' where id=".$p->{id_member}.";"); +# # $html->{result}->{new_profile_photo}= $filepath; +# # } elsif ($p->{upload_filetype} eq "profile_photo"){ +# # #convert! +# # $db->dbexec("update members set profile_photo='".$filepath."' where id=".$p->{id_member}.";"); +# # $html->{result}->{new_profile_photo}= $filepath; +# # } elsif ($p->{upload_filetype} eq "spillbou"){ +# # $db->dbexec("update csresult set upload_team".$p->{team}."='".$filepath."' where id=;"); +# # } elsif ($p->{upload_filetype} eq "member_document"){ + +# # } elsif ($p->{upload_filetype} eq "clublogo_new"){ + +# # } elsif ($p->{upload_filetype} eq "clublogo"){ + +# # } elsif ($p->{upload_filetype} eq "website_image"){ + +# # } els +# } +# } +# if (exists($p->{gameresult})){ +# my $basepath = dirname(dirname($ENV{SCRIPT_FILENAME})); +# my $csdir = "data/championship/"; +# my $gmid = $p->{id}; +# my $cdata = $db->dbquerybykey("id","select * from vw_games where id=".$gmid); + +# if ($p->{result_teamhome} ne ""){ +# my $suffix = substr($p->{upload_teamhome},rindex($p->{upload_teamhome},'.')+1); +# my $fh = $cgi->upload('upload_teamhome'); +# my $filepath = $basepath.'/'.$csdir.'/'.$cdata->{$gmid}->{season}.'/'.$cdata->{$gmid}->{playday}.'_'.$cdata->{$gmid}->{link_teamhome}.'.'.$suffix; +# open(NF,">".$filepath); +# binmode NF; +# while (<$fh>) { +# print NF; +# } +# close(NF); +# $db->dbexec("UPDATE csgames set upload_teamhome='".basename($filepath)."',result_teamhome='".$p->{result_teamhome}."' WHERE id=".$gmid); + +# #transform document an make thumbnail +# } +# if ($p->{result_teamguest} ne ""){ +# my $suffix = substr($p->{upload_teamguest},rindex($p->{upload_teamguest},'.')+1); +# my $fh = $cgi->upload('upload_teamguest'); +# my $filepath = $basepath.'/'.$csdir.'/'.$cdata->{$gmid}->{season}.'/'.$cdata->{$gmid}->{playday}.'_'.$cdata->{$gmid}->{link_teamguest}.'.'.$suffix; +# open(NF,">".$filepath); +# binmode NF; +# while (<$fh>) { +# print NF; +# } +# close(NF); +# $db->dbexec("UPDATE csgames set upload_teamguest='".basename($filepath)."',result_teamguest='".$p->{result_teamguest}."' WHERE id=".$gmid); +# #transform document an make thumbnail +# } +# $cdata = $db->dbquerybykey("id","select * from vw_games where id=".$gmid); +# if ($cdata->{$gmid}->{result_teamhome} eq $cdata->{$gmid}->{result_teamguest}){ + +# my $pth = "null"; +# my $ptg = "null"; +# my @x = (); +# if (($sess->{usergroups} =~ /fld/ ) && ($p->{sets_teamhome} ne "") && ($p->{sets_teamgoust} ne "")){ +# push(@x,$p->{sets_teamhome}); +# push(@x,$p->{sets_teamguest}); +# } else { +# @x= split("-",$cdata->{$gmid}->{result_teamhome}); +# } +# if (int($x[0]) > int($x[1])){$pth = 3;$ptg=0;} else {$pth = 0;$ptg=3;} +# if (int($x[0]) == int($x[1])){$pth = 1; $ptg = 1;} +# $db->dbexec("update csgames set sets_teamhome=".$x[0].", sets_teamguest=".$x[1].",points_teamhome=".$pth.",points_teamguest=".$ptg." WHERE id=".$gmid.";"); +# if (($sess->{usergroups} =~ /fld/ ) && ($p->{validated} eq "1")) { +# $db->dbexec("update csgames set validated=true WHERE id=".$gmid.";"); +# } +# } else { +# $db->dbexec("update csgames set sets_teamhome=null, sets_teamguest=null,points_teamhome=null,points_teamguest=null,validated=null WHERE id=".$gmid.";"); +# } +# $db->dbexec("select * from setcsranking('".$cdata->{$gmid}->{id_season}."','".$cdata->{$gmid}->{id_division}."');"); +# } +my $js = JSON::PP->new(); +$js->allow_blessed(1); +# open(NF,">upload.txt"); +# print NF $js->utf8->encode($p); +# print NF $js->utf8->encode($sess); +# close(NF); +$html->{result}->{p} = $p; +print $js->utf8->encode($p); \ No newline at end of file diff --git a/backoffice/css/module.css b/backoffice/css/module.css new file mode 100644 index 0000000..ca08b42 --- /dev/null +++ b/backoffice/css/module.css @@ -0,0 +1,8 @@ +/* input::-webkit-calendar-picker-indicator{ + display: none; +} +And to hide the prompt: + +input[type="date"]::-webkit-input-placeholder{ + visibility: hidden !important; +} */ \ No newline at end of file diff --git a/backoffice/css/w3pro.css b/backoffice/css/w3pro.css new file mode 100644 index 0000000..7b4b45d --- /dev/null +++ b/backoffice/css/w3pro.css @@ -0,0 +1,379 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:4px;display:block;border:1px solid #ccc;width:100%;background-color: #e8f0fe; } +.w3-select{padding:4px 0; display:block;width:100%;border:1px solid #ccc;background-color: #e8f0fe;} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block; } +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter,.w3-fifth,.w3-twofifth,.w3-threefifth,.w3-fourfifth{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}.w3-fifth{width:20%;min-width:100px} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}.w3-twofifth{width:40%}.w3-threefifth{width:60%}.w3-fourfifth{width:80%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 8px}.w3-panel{margin-top:8px;margin-bottom:8px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:#ccc!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} +/* DEFAULT COLORS */ +.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} +.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} +.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important} +.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} +.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} +.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} +.w3-blue-grey,.w3-hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important} +.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} +.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} +.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} +.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} +.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} +.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} +.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} +.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} +.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} +.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} +.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} +.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} +.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} +.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} +.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} +.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} +.w3-grey,.w3-hover-grey:hover{color:#000!important;background-color:#9e9e9e!important} +.w3-light-grey,.w3-hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important} +.w3-dark-grey,.w3-hover-dark-grey:hover{color:#fff!important;background-color:#616161!important} +.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important} +.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important} +.w3-text-align-right { text-align: right;} +.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} +.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} +.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} +.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} +.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} +.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} +.w3-text-blue-grey,.w3-hover-text-blue-grey:hover{color:#607d8b!important} +.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} +.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} +.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} +.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} +.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} +.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} +.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} +.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} +.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} +.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} +.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} +.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} +.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} +.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} +.w3-text-white,.w3-hover-text-white:hover{color:#fff!important} +.w3-text-black,.w3-hover-text-black:hover{color:#000!important} +.w3-text-grey,.w3-hover-text-grey:hover{color:#757575!important} +.w3-text-light-grey,.w3-hover-text-light-grey:hover{color:#f1f1f1!important} +.w3-text-dark-grey,.w3-hover-text-dark-grey:hover{color:#3a3a3a!important} +.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} +.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} +.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} +.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} +.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} +.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} +.w3-border-blue-grey,.w3-hover-blue-grey:hover{border-color:#607d8b!important} +.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} +.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} +.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} +.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} +.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} +.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} +.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} +.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} +.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} +.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} +.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} +.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} +.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} +.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} +.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} +.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} +.w3-border-grey,.w3-hover-border-grey:hover{border-color:#9e9e9e!important} +.w3-border-light-grey,.w3-hover-border-light-grey:hover{border-color:#f1f1f1!important} +.w3-border-dark-grey,.w3-hover-border-dark-grey:hover{border-color:#616161!important} +.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} +.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffd7!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} +/* DEFAULT THEME */ +.w3-theme-l5 {color:#000 !important; background-color:#f6f8fc !important} +.w3-theme-l4 {color:#000 !important; background-color:#e1e9f6 !important} +.w3-theme-l3 {color:#000 !important; background-color:#c3d3ed !important} +.w3-theme-l2 {color:#000 !important; background-color:#a5bee4 !important} +.w3-theme-l1 {color:#fff !important; background-color:#88a8db !important} +.w3-theme-d1 {color:#fff !important; background-color:#5180cb !important} +.w3-theme-d2 {color:#fff !important; background-color:#3a6fc3 !important} +.w3-theme-d3 {color:#fff !important; background-color:#3361aa !important} +.w3-theme-d4 {color:#fff !important; background-color:#2c5392 !important} +.w3-theme-d5 {color:#fff !important; background-color:#24457a !important} + +.w3-theme-light {color:#000 !important; background-color:#f6f8fc !important} +.w3-theme-dark {color:#fff !important; background-color:#24457a !important} +.w3-theme-action {color:#fff !important; background-color:#24457a !important} + +.w3-theme {color:#fff !important; background-color:#6a92d3 !important} +.w3-text-theme {color:#6a92d3 !important} +.w3-border-theme {border-color:#6a92d3 !important} + +.w3-hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important} +.w3-hover-text-theme:hover {color:#6a92d3 !important} +.w3-hover-border-theme:hover {border-color:#6a92d3 !important} + +.w3-label { color: rgb(153, 150, 150);} +/* #main {margin-left: 210px;} */ +@media (max-width:768px){ + #sidebar { display: none;} + #main { margin-left: 0px;} +} + +.w3-select { + display: block; + font-size: 16px; + font-family: sans-serif; + font-weight: normal; + color: #444; + line-height: 1.3; + padding: .6em 1.4em .5em .8em; + width: 100%; + max-width: 100%; + box-sizing: border-box; + margin: 0; + border-bottom: 1px solid #aaa; + box-shadow: 0 1px 0 1px rgba(0,0,0,.04); + /* border-radius: .5em; */ + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + background-color: #e8f0fe; + background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), + linear-gradient(to bottom, #e8f0fe 0%,#e8f0fe 100%); + background-repeat: no-repeat, repeat; + background-position: right .7em top 50%, 0 0; + background-size: .65em auto, 100%; +} +.w3-select::-ms-expand { + display: none; +} +.w3-select:hover { + border-color: #888; +} +.w3-select:focus { + border-color: #aaa; + box-shadow: 0 0 1px 1px #6a92d3; + box-shadow: 0 0 0 1px -moz-mac-focusring; + color: #222; + outline: none; +} + + +.w3-select option { + font-weight:normal; +} + +.w3-table { + table-layout: fixed; +} + +.w3-text-line-through { text-decoration: line-through; } + +#snackbar { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 1; + left: 50%; + bottom: 30px; + font-size: 17px; +} + +#snackbar.show { + visibility: visible; + -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s; + animation: fadein 0.5s, fadeout 0.5s 2.5s; +} + +@-webkit-keyframes fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} +} + +@keyframes fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} +} + +@-webkit-keyframes fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} +} + +@keyframes fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} +} + +.tabulator-header-filter > input { + background-color: #e8f0fe; + border: 1px solid #ccc; + font-weight: normal; +} + +.w3-readonly { + pointer-events:none; + padding:8px;display:block;border:0px;width:100%;background-color: #fff; +} + +.right-side-bg { + background: url("../img/bg1.jpg"); + background-size: cover; + min-height: 100vh; +} + +/* .mceContentBody { + background: #e8f0fe; + color:#000; +} */ + +/* .tabulator-row-even { + background-color: #757575; +} */ \ No newline at end of file diff --git a/backoffice/data/.htaccess b/backoffice/data/.htaccess new file mode 100644 index 0000000..b4b826d --- /dev/null +++ b/backoffice/data/.htaccess @@ -0,0 +1,5 @@ +RewriteEngine On +RewriteBase / +RewriteCond %{HTTP_COOKIE} !potlu= [NC] +RewriteRule .* "%{REQUEST_SCHEME}://%{HTTP_HOST}/backoffice/login.html" [L] +# Require all denied \ No newline at end of file diff --git a/backoffice/data/company/.htaccess b/backoffice/data/company/.htaccess new file mode 100644 index 0000000..b4b826d --- /dev/null +++ b/backoffice/data/company/.htaccess @@ -0,0 +1,5 @@ +RewriteEngine On +RewriteBase / +RewriteCond %{HTTP_COOKIE} !potlu= [NC] +RewriteRule .* "%{REQUEST_SCHEME}://%{HTTP_HOST}/backoffice/login.html" [L] +# Require all denied \ No newline at end of file diff --git a/backoffice/data/schemata/.htaccess b/backoffice/data/schemata/.htaccess new file mode 100644 index 0000000..b4b826d --- /dev/null +++ b/backoffice/data/schemata/.htaccess @@ -0,0 +1,5 @@ +RewriteEngine On +RewriteBase / +RewriteCond %{HTTP_COOKIE} !potlu= [NC] +RewriteRule .* "%{REQUEST_SCHEME}://%{HTTP_HOST}/backoffice/login.html" [L] +# Require all denied \ No newline at end of file diff --git a/backoffice/data/schemata/defaultcompany.schema.sql b/backoffice/data/schemata/defaultcompany.schema.sql new file mode 100644 index 0000000..f7db8e9 --- /dev/null +++ b/backoffice/data/schemata/defaultcompany.schema.sql @@ -0,0 +1,1193 @@ + +CREATE SCHEMA %%NEWSCHEMA%%; + +CREATE TABLE %%NEWSCHEMA%%.defaultweekworkplan ( + id integer NOT NULL, + id_staff integer, + startdate date, + mon json, + tue json, + wed json, + thu json, + fri json, + sat json, + sun json +); + +CREATE SEQUENCE %%NEWSCHEMA%%.defaultweekworkplan_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.defaultweekworkplan_id_seq OWNED BY %%NEWSCHEMA%%.defaultweekworkplan.id; + +CREATE TABLE %%NEWSCHEMA%%.defaultworkplan ( + id bigint NOT NULL, + id_staff integer, + daydate date, + plannedtimes json, + vacancytimes json, + presencetimes json +); + +CREATE SEQUENCE %%NEWSCHEMA%%.defaultworkplan_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.defaultworkplan_id_seq OWNED BY %%NEWSCHEMA%%.defaultworkplan.id; + +CREATE TABLE %%NEWSCHEMA%%.reportperiod ( + id integer NOT NULL, + periodname text, + startdate date, + enddate date +); + +CREATE SEQUENCE %%NEWSCHEMA%%.reportperiod_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.reportperiod_id_seq OWNED BY %%NEWSCHEMA%%.reportperiod.id; + +CREATE TABLE %%NEWSCHEMA%%.sites ( + id integer NOT NULL, + sitename text, + address text, + zip text, + city text, + country text, + id_timetracker integer, + created timestamp without time zone DEFAULT now(), + modified timestamp without time zone DEFAULT now(), + timeclockhost text +); + +CREATE SEQUENCE %%NEWSCHEMA%%.sites_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.sites_id_seq OWNED BY %%NEWSCHEMA%%.sites.id; + +CREATE TABLE %%NEWSCHEMA%%.staff ( + id integer NOT NULL, + staffnumber text, + surname text, + prename text, + job text, + birthdate date, + entrydate date, + leavedate date +); + +CREATE SEQUENCE %%NEWSCHEMA%%.staff_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.staff_id_seq OWNED BY %%NEWSCHEMA%%.staff.id; + +CREATE TABLE %%NEWSCHEMA%%.staffgroups ( + id integer NOT NULL, + groupname text, + groupcolor text +); + +CREATE SEQUENCE %%NEWSCHEMA%%.staffgroups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.staffgroups_id_seq OWNED BY %%NEWSCHEMA%%.staffgroups.id; + +CREATE TABLE %%NEWSCHEMA%%.staffperiodbase ( + id integer NOT NULL, + id_staff integer, + startdate date, + monthhours numeric, + weekhours numeric +); + +CREATE SEQUENCE %%NEWSCHEMA%%.staffperiodbase_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.staffperiodbase_id_seq OWNED BY %%NEWSCHEMA%%.staffperiodbase.id; + +CREATE TABLE %%NEWSCHEMA%%.stafftimetracks ( + id bigint NOT NULL, + id_staff integer, + stamp_in timestamp without time zone, + stamp_out timestamp without time zone, + tracktype text, + created timestamp without time zone DEFAULT now(), + modified timestamp without time zone DEFAULT now() +); + +CREATE SEQUENCE %%NEWSCHEMA%%.stafftimetracks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.stafftimetracks_id_seq OWNED BY %%NEWSCHEMA%%.stafftimetracks.id; + +CREATE TABLE %%NEWSCHEMA%%.staffvacancy ( + id integer NOT NULL, + id_staff integer, + startdate date, + enddate date, + vacancytype text, + dayhours time without time zone, + note text, + validated boolean +); + +CREATE SEQUENCE %%NEWSCHEMA%%.staffvacancy_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.staffvacancy_id_seq OWNED BY %%NEWSCHEMA%%.staffvacancy.id; + +CREATE TABLE %%NEWSCHEMA%%.staffvacancyyear ( + id integer NOT NULL, + id_staff integer, + vyear integer, + hours numeric, + days numeric +); + +CREATE SEQUENCE %%NEWSCHEMA%%.staffvacancyyear_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.staffvacancyyear_id_seq OWNED BY %%NEWSCHEMA%%.staffvacancyyear.id; + +CREATE TABLE %%NEWSCHEMA%%.staffworkplan ( + id bigint NOT NULL, + id_staff integer, + daydate date, + timestart1 time without time zone, + timeend1 time without time zone, + timestart2 time without time zone, + timeend2 time without time zone, + timepause time without time zone, + vacancyhours time without time zone, + vacancytype text +); + +CREATE SEQUENCE %%NEWSCHEMA%%.staffworkplan_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.staffworkplan_id_seq OWNED BY %%NEWSCHEMA%%.staffworkplan.id; + +CREATE VIEW %%NEWSCHEMA%%.vw_reportperiodlist AS + SELECT reportperiod.id, + reportperiod.periodname, + reportperiod.startdate, + reportperiod.enddate + FROM %%NEWSCHEMA%%.reportperiod; + +CREATE VIEW %%NEWSCHEMA%%.vw_stafflist AS + SELECT staff.id, + staff.staffnumber, + staff.surname, + staff.prename, + staff.job, + staff.birthdate, + staff.entrydate, + staff.leavedate, + ((staff.surname || ' '::text) || staff.prename) AS dspname + FROM %%NEWSCHEMA%%.staff; + +CREATE VIEW %%NEWSCHEMA%%.vw_staffplanned_dayweektotals AS + SELECT stw2.calweek, + stw2.caldate AS dates, + stw2.id_staff, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS mon_id, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_start1, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_end1, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_start2, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_end2, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS mon_timetotal, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS tue_id, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_start1, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_end1, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_start2, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_end2, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS tue_timetotal, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS wed_id, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_start1, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_end1, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_start2, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_end2, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS wed_timetotal, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS thu_id, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_start1, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_end1, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_start2, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_end2, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS thu_timetotal, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS fri_id, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_start1, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_end1, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_start2, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_end2, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS fri_timetotal, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS sat_id, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_start1, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_end1, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_start2, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_end2, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS sat_timetotal, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS sun_id, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_start1, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_end1, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_start2, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_end2, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_pause, + to_char(max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS sun_timetotal, + to_char(sum(((stw2.time1 + stw2.time2) - (stw2.timepause)::interval)), 'HH24:MI'::text) AS week_timetotal + FROM ( SELECT staffworkplan.daydate, + date_part('week'::text, staffworkplan.daydate) AS calweek, + (date_trunc('week'::text, (staffworkplan.daydate)::timestamp with time zone))::date AS caldate, + date_part('isodow'::text, staffworkplan.daydate) AS isodow, + staffworkplan.id, + staffworkplan.id_staff, + staffworkplan.timestart1, + staffworkplan.timeend1, + CASE + WHEN (staffworkplan.timestart1 > staffworkplan.timeend1) THEN ('24:00:00'::time without time zone - ((staffworkplan.timestart1 - staffworkplan.timeend1))::time without time zone) + ELSE (staffworkplan.timeend1 - staffworkplan.timestart1) + END AS time1, + staffworkplan.timestart2, + staffworkplan.timeend2, + CASE + WHEN (staffworkplan.timestart2 > staffworkplan.timeend2) THEN ('24:00:00'::time without time zone - ((staffworkplan.timestart2 - staffworkplan.timeend2))::time without time zone) + ELSE (staffworkplan.timeend2 - staffworkplan.timestart2) + END AS time2, + staffworkplan.timepause + FROM %%NEWSCHEMA%%.staffworkplan) stw2 + GROUP BY stw2.calweek, stw2.caldate, stw2.id_staff; + +CREATE VIEW %%NEWSCHEMA%%.vw_staffworkplan_weekly AS + SELECT stw2.calweek, + to_char((stw2.caldate)::timestamp with time zone, 'YYYY'::text) AS calyear, + stw2.caldate AS weekbegin, + public.getdateslist(stw2.caldate, 7) AS dates, + stw2.id_staff, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS mon_id, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_start1, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_end1, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_start2, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_end2, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_pause, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS mon_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS mon_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (1)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS mon_timetotal, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS tue_id, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_start1, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_end1, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_start2, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_end2, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_pause, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS tue_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS tue_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (2)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS tue_timetotal, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS wed_id, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_start1, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_end1, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_start2, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_end2, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_pause, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS wed_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS wed_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (3)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS wed_timetotal, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS thu_id, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_start1, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_end1, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_start2, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_end2, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_pause, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS thu_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS thu_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (4)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS thu_timetotal, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS fri_id, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_start1, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_end1, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_start2, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_end2, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_pause, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS fri_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS fri_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (5)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS fri_timetotal, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS sat_id, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_start1, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_end1, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_start2, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_end2, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_pause, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sat_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS sat_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (6)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS sat_timetotal, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN stw2.id + ELSE NULL::bigint + END) AS sun_id, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timestart1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_start1, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timeend1)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_end1, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timestart2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_start2, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timeend2)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_end2, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.timepause)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_pause, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN to_char((stw2.vacancyhours)::interval, 'HH24:MI'::text) + ELSE NULL::text + END) AS sun_vacancyhours, + max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN stw2.vacancytype + ELSE NULL::text + END) AS sun_vacancytype, + to_char(max( + CASE + WHEN (stw2.isodow = (7)::double precision) THEN ((stw2.time1 + stw2.time2) - (stw2.timepause)::interval) + ELSE NULL::interval + END), 'HH24:MI'::text) AS sun_timetotal, + to_char(sum(((stw2.time1 + stw2.time2) - (stw2.timepause)::interval)), 'HH24:MI'::text) AS week_timetotal + FROM ( SELECT staffworkplan.daydate, + date_part('week'::text, staffworkplan.daydate) AS calweek, + (date_trunc('week'::text, (staffworkplan.daydate)::timestamp with time zone))::date AS caldate, + date_part('isodow'::text, staffworkplan.daydate) AS isodow, + staffworkplan.id, + staffworkplan.id_staff, + staffworkplan.timestart1, + staffworkplan.timeend1, + staffworkplan.vacancyhours, + staffworkplan.vacancytype, + CASE + WHEN (staffworkplan.timestart1 > staffworkplan.timeend1) THEN ('24:00:00'::time without time zone - ((staffworkplan.timestart1 - staffworkplan.timeend1))::time without time zone) + ELSE (staffworkplan.timeend1 - staffworkplan.timestart1) + END AS time1, + staffworkplan.timestart2, + staffworkplan.timeend2, + CASE + WHEN (staffworkplan.timestart2 > staffworkplan.timeend2) THEN ('24:00:00'::time without time zone - ((staffworkplan.timestart2 - staffworkplan.timeend2))::time without time zone) + ELSE (staffworkplan.timeend2 - staffworkplan.timestart2) + END AS time2, + staffworkplan.timepause + FROM %%NEWSCHEMA%%.staffworkplan) stw2 + GROUP BY stw2.calweek, stw2.caldate, stw2.id_staff; + +CREATE VIEW %%NEWSCHEMA%%.vw_staffworkplanlist AS + SELECT st.id AS id_staff, + ((st.surname || ' '::text) || st.prename) AS staffname, + (((((('Semaine '::text || sp_dwt.calweek) || '
('::text) || to_char((sp_dwt.weekbegin)::timestamp with time zone, 'DD.MM.YYYY'::text)) || ' - '::text) || to_char((date((sp_dwt.weekbegin + '7 days'::interval)))::timestamp with time zone, 'DD.MM.YYYY'::text)) || ')'::text) AS calweek, + sp_dwt.week_timetotal, + sp_dwt.weekbegin AS weekstart, + date((sp_dwt.weekbegin + '7 days'::interval)) AS weekend, + to_char((((((( + CASE + WHEN (sp_dwt.mon_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.mon_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END + + CASE + WHEN (sp_dwt.tue_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.tue_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.wed_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.wed_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.thu_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.thu_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.fri_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.fri_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.sat_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.sat_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.sun_vacancytype = 'ill'::text) THEN COALESCE((sp_dwt.sun_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END), 'HH24:MI'::text) AS weekvacancy_times_ill, + to_char((((((( + CASE + WHEN (sp_dwt.mon_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.mon_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END + + CASE + WHEN (sp_dwt.tue_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.tue_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.wed_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.wed_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.thu_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.thu_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.fri_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.fri_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.sat_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.sat_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END) + + CASE + WHEN (sp_dwt.sun_vacancytype <> 'ill'::text) THEN COALESCE((sp_dwt.sun_vacancyhours)::interval, '00:00:00'::interval) + ELSE '00:00:00'::interval + END), 'HH24:MI'::text) AS weekvacancy_times, + (((((( + CASE + WHEN (sp_dwt.mon_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.mon_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.mon_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END + + CASE + WHEN (sp_dwt.tue_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.tue_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.tue_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.wed_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.wed_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.wed_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.thu_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.thu_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.thu_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.fri_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.fri_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.fri_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.sat_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.sat_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.sat_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.sun_vacancytype = 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.sun_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.sun_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) AS weekvacancy_minutes_ill, + (((((( + CASE + WHEN (sp_dwt.mon_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.mon_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.mon_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END + + CASE + WHEN (sp_dwt.tue_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.tue_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.tue_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.wed_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.wed_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.wed_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.thu_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.thu_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.thu_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.fri_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.fri_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.fri_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.sat_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.sat_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.sat_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) + + CASE + WHEN (sp_dwt.sun_vacancytype <> 'ill'::text) THEN COALESCE(((to_number("left"(sp_dwt.sun_vacancyhours, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.sun_vacancyhours, 2), '99'::text)), (0)::numeric) + ELSE (0)::numeric + END) AS weekvacancy_minutes, + ((to_number("left"(sp_dwt.week_timetotal, 2), '99'::text) * (60)::numeric) + to_number("right"(sp_dwt.week_timetotal, 2), '99'::text)) AS weekminutes, + sp_dwt.mon_id, + sp_dwt.weekbegin AS mon_date, + ((COALESCE(((to_char((sp_dwt.mon_start1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((sp_dwt.mon_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.mon_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.mon_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.mon_vacancytype) || ': '::text) || to_char((sp_dwt.mon_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dspmontimes, + sp_dwt.mon_timetotal, + sp_dwt.tue_id, + date((sp_dwt.weekbegin + '1 day'::interval)) AS tue_date, + ((COALESCE(((to_char((sp_dwt.tue_start1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((sp_dwt.tue_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.tue_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.tue_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.tue_vacancytype) || ': '::text) || to_char((sp_dwt.tue_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dsptuetimes, + sp_dwt.tue_timetotal, + sp_dwt.wed_id, + date((sp_dwt.weekbegin + '2 days'::interval)) AS wed_date, + ((COALESCE(((to_char((sp_dwt.wed_start1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((sp_dwt.wed_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.wed_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.wed_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.wed_vacancytype) || ': '::text) || to_char((sp_dwt.wed_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dspwedtimes, + sp_dwt.wed_timetotal, + sp_dwt.thu_id, + date((sp_dwt.weekbegin + '3 days'::interval)) AS thu_date, + ((COALESCE(((to_char((sp_dwt.thu_start1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((sp_dwt.thu_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.thu_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.thu_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.thu_vacancytype) || ': '::text) || to_char((sp_dwt.thu_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dspthutimes, + sp_dwt.thu_timetotal, + sp_dwt.fri_id, + date((sp_dwt.weekbegin + '4 days'::interval)) AS fri_date, + ((COALESCE(((to_char((sp_dwt.fri_start1)::interval, 'HH24:MI'::text) || ' -'::text) || to_char((sp_dwt.fri_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.fri_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.fri_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.fri_vacancytype) || ': '::text) || to_char((sp_dwt.fri_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dspfritimes, + sp_dwt.fri_timetotal, + sp_dwt.sat_id, + date((sp_dwt.weekbegin + '5 days'::interval)) AS sat_date, + ((COALESCE(((to_char((sp_dwt.sat_start1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((sp_dwt.sat_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.sat_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.sat_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.sat_vacancytype) || ': '::text) || to_char((sp_dwt.sat_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dspsattimes, + sp_dwt.sat_timetotal, + sp_dwt.sun_id, + date((sp_dwt.weekbegin + '6 days'::interval)) AS sun_date, + ((COALESCE(((to_char((sp_dwt.sun_start1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((sp_dwt.sun_end1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((sp_dwt.sun_start2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((sp_dwt.sun_end2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE(((('
Congé '::text || sp_dwt.sun_vacancytype) || ': '::text) || to_char((sp_dwt.sun_vacancyhours)::interval, 'HH24:MI'::text)), ''::text)) AS dspsuntimes, + sp_dwt.sun_timetotal + FROM (%%NEWSCHEMA%%.vw_staffworkplan_weekly sp_dwt + LEFT JOIN %%NEWSCHEMA%%.staff st ON ((sp_dwt.id_staff = st.id))) + ORDER BY sp_dwt.calweek; + +CREATE TABLE %%NEWSCHEMA%%.workplans ( + id integer NOT NULL, + workplan text, + mon_timestart1 time without time zone, + mon_timeend1 time without time zone, + mon_timestart2 time without time zone, + mon_timeend2 time without time zone, + mon_timepause time without time zone, + tue_timestart1 time without time zone, + tue_timeend1 time without time zone, + tue_timestart2 time without time zone, + tue_timeend2 time without time zone, + tue_timepause time without time zone, + wed_timestart1 time without time zone, + wed_timeend1 time without time zone, + wed_timestart2 time without time zone, + wed_timeend2 time without time zone, + wed_timepause time without time zone, + thu_timestart1 time without time zone, + thu_timeend1 time without time zone, + thu_timestart2 time without time zone, + thu_timeend2 time without time zone, + thu_timepause time without time zone, + fri_timestart1 time without time zone, + fri_timeend1 time without time zone, + fri_timestart2 time without time zone, + fri_timeend2 time without time zone, + fri_timepause time without time zone, + sat_timestart1 time without time zone, + sat_timeend1 time without time zone, + sat_timestart2 time without time zone, + sat_timeend2 time without time zone, + sat_timepause time without time zone, + sun_timestart1 time without time zone, + sun_timeend1 time without time zone, + sun_timestart2 time without time zone, + sun_timeend2 time without time zone, + sun_timepause time without time zone +); + +CREATE VIEW %%NEWSCHEMA%%.vw_workplanlist AS + SELECT workplans.id, + workplans.workplan + FROM %%NEWSCHEMA%%.workplans; + +CREATE VIEW %%NEWSCHEMA%%.vw_workplans AS + SELECT workplans.id, + workplans.workplan, + ((COALESCE(((to_char((workplans.mon_timestart1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((workplans.mon_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.mon_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.mon_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.mon_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dspmontimes, + ((COALESCE(((to_char((workplans.tue_timestart1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((workplans.tue_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.tue_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.tue_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.tue_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dsptuetimes, + ((COALESCE(((to_char((workplans.wed_timestart1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((workplans.wed_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.wed_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.wed_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.wed_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dspwedtimes, + ((COALESCE(((to_char((workplans.thu_timestart1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((workplans.thu_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.thu_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.thu_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.thu_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dspthutimes, + ((COALESCE(((to_char((workplans.fri_timestart1)::interval, 'HH24:MI'::text) || ' -'::text) || to_char((workplans.fri_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.fri_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.fri_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.fri_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dspfritimes, + ((COALESCE(((to_char((workplans.sat_timestart1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((workplans.sat_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.sat_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.sat_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.sat_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dspsattimes, + ((COALESCE(((to_char((workplans.sun_timestart1)::interval, 'HH24:MI'::text) || ' - '::text) || to_char((workplans.sun_timeend1)::interval, 'HH24:MI'::text)), ''::text) || COALESCE(((('
'::text || to_char((workplans.sun_timestart2)::interval, 'HH24:MI'::text)) || ' - '::text) || to_char((workplans.sun_timeend2)::interval, 'HH24:MI'::text)), ''::text)) || COALESCE((('
'::text || 'Pause: '::text) || to_char((workplans.sun_timepause)::interval, 'HH24:MI'::text)), ''::text)) AS dspsuntimes + FROM %%NEWSCHEMA%%.workplans; + +CREATE VIEW %%NEWSCHEMA%%.vw_workplansdata AS + SELECT workplans.id, + workplans.workplan, + to_char((workplans.mon_timestart1)::interval, 'HH24:MI'::text) AS mon_timestart1, + to_char((workplans.mon_timeend1)::interval, 'HH24:MI'::text) AS mon_timeend1, + to_char((workplans.mon_timestart2)::interval, 'HH24:MI'::text) AS mon_timestart2, + to_char((workplans.mon_timeend2)::interval, 'HH24:MI'::text) AS mon_timeend2, + to_char((workplans.mon_timepause)::interval, 'HH24:MI'::text) AS mon_timepause, + to_char((workplans.tue_timestart1)::interval, 'HH24:MI'::text) AS tue_timestart1, + to_char((workplans.tue_timeend1)::interval, 'HH24:MI'::text) AS tue_timeend1, + to_char((workplans.tue_timestart2)::interval, 'HH24:MI'::text) AS tue_timestart2, + to_char((workplans.tue_timeend2)::interval, 'HH24:MI'::text) AS tue_timeend2, + to_char((workplans.tue_timepause)::interval, 'HH24:MI'::text) AS tue_timepause, + to_char((workplans.wed_timestart1)::interval, 'HH24:MI'::text) AS wed_timestart1, + to_char((workplans.wed_timeend1)::interval, 'HH24:MI'::text) AS wed_timeend1, + to_char((workplans.wed_timestart2)::interval, 'HH24:MI'::text) AS wed_timestart2, + to_char((workplans.wed_timeend2)::interval, 'HH24:MI'::text) AS wed_timeend2, + to_char((workplans.wed_timepause)::interval, 'HH24:MI'::text) AS wed_timepause, + to_char((workplans.thu_timestart1)::interval, 'HH24:MI'::text) AS thu_timestart1, + to_char((workplans.thu_timeend1)::interval, 'HH24:MI'::text) AS thu_timeend1, + to_char((workplans.thu_timestart2)::interval, 'HH24:MI'::text) AS thu_timestart2, + to_char((workplans.thu_timeend2)::interval, 'HH24:MI'::text) AS thu_timeend2, + to_char((workplans.thu_timepause)::interval, 'HH24:MI'::text) AS thu_timepause, + to_char((workplans.fri_timestart1)::interval, 'HH24:MI'::text) AS fri_timestart1, + to_char((workplans.fri_timeend1)::interval, 'HH24:MI'::text) AS fri_timeend1, + to_char((workplans.fri_timestart2)::interval, 'HH24:MI'::text) AS fri_timestart2, + to_char((workplans.fri_timeend2)::interval, 'HH24:MI'::text) AS fri_timeend2, + to_char((workplans.fri_timepause)::interval, 'HH24:MI'::text) AS fri_timepause, + to_char((workplans.sat_timestart1)::interval, 'HH24:MI'::text) AS sat_timestart1, + to_char((workplans.sat_timeend1)::interval, 'HH24:MI'::text) AS sat_timeend1, + to_char((workplans.sat_timestart2)::interval, 'HH24:MI'::text) AS sat_timestart2, + to_char((workplans.sat_timeend2)::interval, 'HH24:MI'::text) AS sat_timeend2, + to_char((workplans.sat_timepause)::interval, 'HH24:MI'::text) AS sat_timepause, + to_char((workplans.sun_timestart1)::interval, 'HH24:MI'::text) AS sun_timestart1, + to_char((workplans.sun_timeend1)::interval, 'HH24:MI'::text) AS sun_timeend1, + to_char((workplans.sun_timestart2)::interval, 'HH24:MI'::text) AS sun_timestart2, + to_char((workplans.sun_timeend2)::interval, 'HH24:MI'::text) AS sun_timeend2, + to_char((workplans.sun_timepause)::interval, 'HH24:MI'::text) AS sun_timepause + FROM %%NEWSCHEMA%%.workplans; + +CREATE SEQUENCE %%NEWSCHEMA%%.workplans_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.workplans_id_seq OWNED BY %%NEWSCHEMA%%.workplans.id; + +CREATE TABLE %%NEWSCHEMA%%.worktypes ( + id integer NOT NULL, + worktype text, + isworktime boolean, + isfreetime boolean, + typecolor text +); + +CREATE SEQUENCE %%NEWSCHEMA%%.worktypes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE %%NEWSCHEMA%%.worktypes_id_seq OWNED BY %%NEWSCHEMA%%.worktypes.id; + +ALTER TABLE ONLY %%NEWSCHEMA%%.defaultweekworkplan ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.defaultweekworkplan_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.defaultworkplan ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.defaultworkplan_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.reportperiod ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.reportperiod_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.sites ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.sites_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staff ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.staff_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffgroups ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.staffgroups_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffperiodbase ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.staffperiodbase_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.stafftimetracks ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.stafftimetracks_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffvacancy ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.staffvacancy_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffvacancyyear ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.staffvacancyyear_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffworkplan ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.staffworkplan_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.workplans ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.workplans_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.worktypes ALTER COLUMN id SET DEFAULT nextval('%%NEWSCHEMA%%.worktypes_id_seq'::regclass); + +ALTER TABLE ONLY %%NEWSCHEMA%%.defaultweekworkplan + ADD CONSTRAINT defaultweekworkplan_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.defaultworkplan + ADD CONSTRAINT defaultworkplan_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.reportperiod + ADD CONSTRAINT reportperiod_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.sites + ADD CONSTRAINT sites_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staff + ADD CONSTRAINT staff_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffgroups + ADD CONSTRAINT staffgroups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffperiodbase + ADD CONSTRAINT staffperiodbase_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.stafftimetracks + ADD CONSTRAINT stafftimetracks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffvacancy + ADD CONSTRAINT staffvacancy_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffvacancyyear + ADD CONSTRAINT staffvacancyyear_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.staffworkplan + ADD CONSTRAINT staffworkplan_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.workplans + ADD CONSTRAINT workplans_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY %%NEWSCHEMA%%.worktypes + ADD CONSTRAINT worktypes_pkey PRIMARY KEY (id); + +CREATE TRIGGER trg_upd_%%NEWSCHEMA%%_weekhours BEFORE UPDATE OF weekhours ON %%NEWSCHEMA%%.staffperiodbase FOR EACH ROW EXECUTE PROCEDURE public.trg_update_monthhours(); diff --git a/backoffice/img/bg1.jpg b/backoffice/img/bg1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80c5326053ade12314d27724114da709830fe3d3 GIT binary patch literal 135161 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�r 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 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/android-icon-48x48.png b/backoffice/img/favicon/android-icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..d5beba1902ea70b981c1c28ee32798c8005b2f89 GIT binary patch literal 3489 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 XiuC>_GTDXb6#%%wP5p8`htPikadT_3 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/android-icon-72x72.png b/backoffice/img/favicon/android-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7f324a28c3cc93777e767320e582fd5c45ac72 GIT binary patch literal 5250 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 UE14J+Fb@D(NkxfDF~flW0poslUH||9 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/apple-icon-114x114.png b/backoffice/img/favicon/apple-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..3d448dda3db640d4cc0e3f9c3866714601f07e67 GIT binary patch literal 8487 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 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/apple-icon-144x144.png b/backoffice/img/favicon/apple-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa79d8f6bec08a6381a56a5ec969b936f722ef9 GIT binary patch literal 12179 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 Msj92;LCGrQKY(HNUH||9 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/apple-icon-72x72.png b/backoffice/img/favicon/apple-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7f324a28c3cc93777e767320e582fd5c45ac72 GIT binary patch literal 5250 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 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/apple-icon-precomposed.png b/backoffice/img/favicon/apple-icon-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3635a6dc2af2ecc364a99768424b12fd7e69da GIT binary patch literal 17158 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 E022prDF6Tf literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/apple-icon.png b/backoffice/img/favicon/apple-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3635a6dc2af2ecc364a99768424b12fd7e69da GIT binary patch literal 17158 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 E022prDF6Tf literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/browserconfig.xml b/backoffice/img/favicon/browserconfig.xml new file mode 100644 index 0000000..c554148 --- /dev/null +++ b/backoffice/img/favicon/browserconfig.xml @@ -0,0 +1,2 @@ + +#ffffff \ No newline at end of file diff --git a/backoffice/img/favicon/favicon-16x16.png b/backoffice/img/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..09adf921a0468a44a6b36a4ecf986dc550b74afd GIT binary patch literal 1251 zcmZ{hc~F~07{(W&S_%x}9|fK21V=kmCnqF?v<89!f&%3#_9h2kj-fy%d=z1na98==8E>ePoG@ojWtD++0*^pDR};Wy-4N9`>bTaoU}~=2a&% zr?1s5Xf_OU3ib5d(z;f6tD@ypT!CysrPJ?-OJ(T|ifzNrALH_lfhmJw=Xzv6>Uvj7?sxE0%Dk>l%r0&A4$rprj*m{y zGX)vU)CrmL#k_K5cxwJ;`J?pG=8C4@e{Afkdf1~>YnIfSDY^1fL56F}_}r3KwYok# zzg%>$J+Hd8rEBC-=g64Lax2Rg1TU5J+rJu=~uI^M$&Aa+Q8nyRB4d*48&t3!Au!rHd-foJt>EE7GqKFKg&L_f^rwn|Bqt&ZtYqu zB^Y0j`?(hre6#Oe7HrJLtW(jj8rLk~*%eNQive#YBiL?`$A(`Rm(M|X^D}ZTFpYfg z{9$^63B#Ua6F>;{Ih&ls2)vfWIPDp7BZ+aI5n%36Q}fyf!Ow=sc1{iTj71b>lo$PC zl2T%0>Yms-dbxGTvWL_Jf^tGEhbfJ2sf8^mWtnwp)%izLuHLrwe>~AK((meqCv+Ct zQ_X59PL@6ouQ)Q9BurAJ@bwBib2HZv$_)mcZg2D3@z4Ccxoj44@HmgndSg8MR$jK% zTm4_@mG*p$jFd~Ibq~U-xE=nT!Gj$mn z0z0E)urMZqOQSKPcrg)3BubfX;f?FYbwoU|k1HR}20UCNsLR$ z!6~_u5ISU{D9I%bmAfWGa@iQ{PwT98I(x0NzV*D%`rhaF{QvL!e(POdq65K7W{=7q z003lctZ`0YR^JIJ2sj3Yg)MK?VTu#S;K9cL6|&m0j;>3>F|>wpKV`d*`|LtSB9vk!D%D27=l8 zM_6|Fnt~MC24_w@-&&IqZbw{G;G3;>?}jKJR^644IwW`7ohnCiZ9@+GjHH#+1aoUf z`r9I_+wu4=e|$Zo*T2`QvLR7GyTo|co`rubAXjB6JDejawJGgONOaO-|RvsB}i#ViO1CwWb^tk#eyZ)Gk&rUYbwKaFuWm@ zwkkIE8%?q3#P|2Nn2xnm(u&>o7A}8xxbH|ictC28w~G7G5|#Y?o-^~Cjx^pfMcXPZ zPwoYeH~lFX{YRJNCDt4b`FLcr&MKmyNV~j=B{$scY#kun#lavV#GVM(LNkI=F*o^o6`b6){*6f zK6A?z^S!DOVxL=X7VDp$7ZxIMKyTuRvH6Friz}i9`a{N(wV9Wpsv(yoP`xu#YA#qmH#vT? z?zkG}m;0B#Z+lKp9qd=oA1mWG<=0k_?M^$$?~gI|hNCN-Nxm zKHzIqaruKq)~PVG+i*%)O)HjNl1rT}w91Rju95hFQ;{*O9yMpot)^!leV&bKjaIO8 z{8uyMrk?c+%!w<>GK^xzGt((8 zW%(4fy;oym@>^`*lu{TZqpcqGX!M1S{FFoe`fq5#e*0E7T4&4`Qg7(w@F@3DT(Lsy z@#;P+<>d)#5sX_KCl=2my^+$gryMkyRMpUlDmjot&|o^MRE>AZf7B|zk38(Mo+D-% zYjNSMF{@e7B{$4WY_Do%O&clR`=#@|S^4FFeZyzR&`yF+o|B(6ZG>tvi_^_H zh3)jv)Yk#32ED@yUZS|)THDo?Kj7#b7k)&|8t?JGH5>Di(6OZ ze^!@ScU<6|x^vxH`>+~3r+8l+23D_Nq=kiKd`aJ<`S#P+qKtwo|Lrz{Y5#foMW~OF0pPQdz zel@eKd7K&^eB#RKw3Mfb5!^^sx3k|}YeTkDoEKB#n;*8MXZ9TWErG`WBHoR7T0FnV z{?>1R6s|8wh{wOe_RcjFXz?pTBURC}Iwc;tXJ|vMsngq#{6&RbioZA0~>Y$~eo&f@MRd<9Lsrzs^EDRLN<#P4u zJ2V&|tG{R5%@{V-4x3XUSt5b%>^1Ofp^qR3Pf`Xt&5j_@Lrjl57)eXv6xT;E9c RzN4T6U~`6mE4A>v`X}I`=GFiJ literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/favicon-96x96.png b/backoffice/img/favicon/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..38484ee8da626ee794ebb2e15086d3cdcf756f14 GIT binary patch literal 7086 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 UE14J+Fb@D(NkxfDF~flW0poslUH||9 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/favicon.ico b/backoffice/img/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bbf93a15721c50068df90e9538c6847d1fff4d17 GIT binary patch literal 1150 zcmbVMT}V_x6uv=ky+{v1LD6GxVMJjNl6mT zd!_uXlC(pTqNfPaC-=+@!O%s?U5=ba3BaK8vZZCLW_uY=UyQX}zb-u&X8>cZ@u%EPAS>MJod^a77psjf_Xwu%r6A^0xi{{wX*B!IjEVk_ zo6Z&Y|MT09^6W#f>CZzRHu4yupQx?v#{eeH-Fz=bJ;Q6L>DSj%huVS*VD+2Rol^7p z9_wXQ1KXIH^8evyeW1PXQC>Rr^JkuCugZd}saQKB3PtOadCM@YBRw1ZqJNCl#V{1+ zaGXu7_os@I;cP16nBey=Ex^4nvkCi9cOT_B$%ur592c4?YXLZ_GN~7jK^|#?5?Vo+ z>Kc?i2&^n)q^ki>^3#bo3u{52dZy@A=CybEzIVb_nSt?}dk`FYkDgWoicaoE&7E_w PXj(FzMIFTd!2kNcGpUjh literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/manifest.json b/backoffice/img/favicon/manifest.json new file mode 100644 index 0000000..013d4a6 --- /dev/null +++ b/backoffice/img/favicon/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/backoffice/img/favicon/ms-icon-144x144.png b/backoffice/img/favicon/ms-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa79d8f6bec08a6381a56a5ec969b936f722ef9 GIT binary patch literal 12179 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 literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/ms-icon-310x310.png b/backoffice/img/favicon/ms-icon-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..12046d8226215dd6366efef3ad25f62253736e99 GIT binary patch literal 40744 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%0AEqn2kF3l^WN68uoPy=|T%nZtdCn+HDa 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 XARymT7AYgZ0Z(07`&lK_>dk)vWynfh literal 0 HcmV?d00001 diff --git a/backoffice/img/favicon/ms-icon-70x70.png b/backoffice/img/favicon/ms-icon-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..5135560d8b047318544e68a5c3242ef7107f3c32 GIT binary patch literal 5051 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 WaO1-kk~8BX0ALyh>h-D)G5-ZLkvOsd literal 0 HcmV?d00001 diff --git a/backoffice/img/hourtrax.png b/backoffice/img/hourtrax.png new file mode 100644 index 0000000000000000000000000000000000000000..4f04687d3c9e391e5bc1417d7c874e8b02e869f2 GIT binary patch literal 44729 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

fC%cXpJlmg-yCX`vf@e;982 z^q(h@3zZE#&8@b6sV;`0Rs-o(^1U3pZS|H=CDccS$Tz1Iys)=XG}GZU(wdy3dy%7w z6cZUXQlf=ZydOf{Q2c%ZO(`e91(QrjGu$vWx5oLtAKTXU=4gT@cj(&A^Tcs6I8t4S zK>vA&4TO^Uu9Rv`JEQ2KqnbK)fS&V+L`=2j=)*=d(WGiSdzeR0?3@!lMOgfeDK0wl zjcn-u(LRb*RG?dmEBYvlsaHjv3sh;`^-yLz;l!&EQ#7emq1B~gX{YPeFLhTr&uYen z-H{UDX_Sxv;GK|h>onv}`9aDC)$a3AGe9y{2xJ7d9-|n2N5F5&;(c$zewyGL{pP=- ztNH%txg)XvF)^Z)q_`ACuIS3XQFJNQQ($K$V-^#t{r6G8Xbp+$Ey}UHbhrrz$3AZw zJ+K#$w_zaA|8R}8nXkC0jCYM`*-X8k(6g!Evzuk)syjbGnRD6QW3xWcbyBs_dj1@` z)pLTp`{DNrsp|jH#Yh(VJUgHTPC}Vrl_m`Zmf$5p|IlyE0A`#QJCn*z#fP#^yO;lG zZ=MAH&r;vL6}%{)Pf3%#2pf4E`cM_Ts(t85gz|J}dTyj;D;V3TkIc?amZw#67`a30 zPXkgzksKRI0Ly+SUaNNR8}{;n!*k1HvP6AI(;(3pjU~H2TAS)^B=+2#TfSQmBj_l~ znHhK%jFQ@Z$c0oVVQShPG+?XSq^9vUDP?uqV&|_G+Te~wYJHk%a;zEUWw~BkcqrU` zW|a+7Pg`c0i@3$1)|f)b=1g=y)&|abWkH?)H3_XZ*qxvEQm8aXHY;=Ys`Pwr0-mCK zsEm>{-uJVeb=@6F=t_-r!c){jjN->|k5&P6L`9Jb{-t}S;t$CA)x7Y|7>k{MQ25X| zHdCl#K)Nx?4%IMqjdS#Hcd=CHK!$W);E&kBY{>POI=GhpL5=rJy1<8IJ_G9JL!NMg zsxC%*fA>=!dv{`7f>4(!is(U0ts?2ZF8p_)vIG_-Ajzu} zm41VjH`TbK*ShGo}lcyEzY`$>(#rxX5`KSBVCEGQ_}Y2^Q?Yc{PN(01qb zun=R^9+>qYrXDSdA?7NrQ{3(-jiRiQx-^^n8NM6+A#`1QL(Wru)Xo$5k|_%4Z0Iwf z2!32c0slA%l}}ZxPG(_OJqw`#at5~D7rQjTInLen=m-0~2lm2qBe*W!axiGidX2Ws zQkKVj(+D5~`GMS0t(9G^Ke!KeJ$$`>jpB6RqM))yHa3a%L5`ccHkD(+t+ZT=s z>2ci~Onfx8VAn+7rdSOG*Pp0tC8 z-6&wS^bOPW&z}~p+ub~MXX5PE2a#iy{1pDCA;~UR>_70LlBAbvr%LC=R;r#es~kgH zhHb685SE{x=jjK6iU`ihDZW$1X@m~`AJJ+7F%D8Dk^jiVXhr*o&r9}7WP_zPmq}VM zCDGI{!;r*;TSljI02N{}dtSSfcXyMGpAjt`vRh(nCCdZP`Ew^g4r!hL>KEks&jhu5 z4RG-Z(Z|}UHT^NdVHV`qnRjtF8v_(5X!OUI_;52X*YjT9EP*mu#y+y0`Z>~jw~?6l z{Bdf2Y+u$UX!K2gFTISps;5&IGahMr8AySy&Ai2D21XI9Fj%eTR%NnYrg%C3+_;!}Zp6czlQi#m3qPp51 zZ^9Pje1jmezbrCfC_yuPSLLF_|HO&bjaXeQpfju>rJD#kO8%PI)nMqjMNjb>^N3Oj zabPYHPpFmY017~|CwQ@!I)@6`dZ5_Be5sxbTFb% z#Sn*&!aIR628qu5%XeM3LRS;DFs1UAGMIIL_d?Gl0^0HXiG@MOv{7oeA_*t|dZ%P$ zs`tR+TU$r;!2k#a)sh~kn)EPWUZndg5UXT7xR>Y0*US@8sJzr~Bz?^L=jcNq8*DUIdDIY~8;fH>{3Ckc`rpuC6NY_CaP;16Ij2S%>J04qq8n&nNe3~FtyP342021QcRpuQ7ag#%DUq;lQvJbZX6#RRBa4e(#ZP#xSDF9Ox-SL-`tAv+A^8 z`m;5)7~*dv8eLD^xJAgNv#xx(!hAqI2nrt%fHyDHo;JL2w0cE~ww3U*6{wIZ zy8Tg}zrn+*63}XH8H0F{KncLbT$BcX*=H#}aO2BP}m;>Evlc0A5&MHJy*+~;gwz3D5QHs9)bM}+_A^usn~ z%IILr3G%C}eu01CjIt#_b|!mU^WK(}dUSCWhwMmIN!_OiMfY%obNEpG(Tbxnt(UU? z@PNB)s+ql-jr;QfsFVGh#$+o%U4S^_Z_AE1mg9;xM^nYlrBoLy9_nK_pf|hqHTw)^ zQ!VE#cx2b8Y!XQ-=auQXAv!!}EvK=);9<|q$H;h*b=!C+8HJQ8?%Y>!LJ6c;}l^t>QOXY0@0vp~xEzxRiwHt60YvpX;rQ-vVcitMAv z75RX0!hV$#BCRn=_&9KwG5tMGfrRo4{XKo1YxtuYheJMkHOTgD2AgW&m7fPtZ`2LFY=d2ux>CXMCRXq1NUbt}_DN}1jdibX$`u}%u! zozshIao1Z95NZC>>i6|Io?;Xi@y3MHy%pfAW|! z=KhK)RAa+uC4f-G^>9m#PIRJr&t@#3HJNA9()sPrPrR6W2`A*9$nTtse*4R#W`co{ zij>6xYH<@{(fQ6!iI1BpLf(nB@qEXJix?2X&VKfXo8Y|!6&npl3hDe7q0s2LeB9GX z?Sz&>Wl7h99E6xTzTw>tK|=1MfBfrepcQ0ILOnXH^0o^E;PMRruM#(O=M^&R@U3jP zL2H>Y+LhGin|M%*%oK>xW~dxbPE%4c4zg-%mF2CrCI48P5=5&Jd*{?Zn~Jk zGvt$)WME8-#_GT87aew9@JE5tTKW3_ul?}4b;X1h3!wcpo@JPacJ2B`egxv;;!Z$nnM;e1r5IMD;= z-I3S1H}S>1heGJ2H_=(yog=3$SXxBWqXTls5HSkuIQ8*Hd_5NH8W%7OP_ZQaP z*c4;n<@Xry0U@8f!o|_9%}=)bVztsby*BFl22lmL8&TutciTES@18IONSy6jOa$Bs zEA3gIf1{;wi#ennobXrv^L1~v2Y&@iv`xkSZ(mQI0Ru}tLbDGDf3+rdvM!g@;0#?B z3m}BAKD1un<6{rS5R<3@EMP^%SN_HDLF6{7SzazBcU~&2{Lih-i54-@fAp*CkA8t| z0il)yU1vbp-Vn5Bc_SBd#$l~4wSE(x|5AT~{h}1#0~`^?g0DMetH64jcz^b6Q=^N7 zM)&=CLcViV&l+;8AmG0oQZ_JhXTrRn#5tx^P9um3G#Y1TK((cAR<_N%aVG>VfckWU zY9k7#ll#w4N3)j%ju9Sr1TR<*G=SSFuOU!tAdl`KKw=3*E0p^m`(g&{tLYLYJJbsD z)lg17x?~S%;_p6p%S~=zYTh{Yo=_^EBG&ZP`|vgZL#(U3i6^0K)Ja5!6yE<)s-Dpx z`UI?roEzY0NU`{rPGtuJ1daMHodQZ_HG|keN0c%A$t_F;S2K37%g~G&m-Zf|Om=15 z&sY3sEl0g_R~eVf_#86$YxnvLWR?IO}Uz}Uc8&jdiIwZIHyhCN^| zWFykT8q`N0ntkc(tu^C1{iH(l( z!;b1m+904S`oA%}->)hlMhOS0-Q#;JRMUP~NpG|qbfS8}VD{xSDKT>BT^+aDX6dQE+l;^R`mqFzn18J~%!(HA?jCm|b?JF5T-*tI)+z2)SHs&*xnH zQ|_&plLi1w1rq;!mwQgp{h!3@=|5F~WpS=(QFxw45-qdpQzKZ)EX$URStUngM|go# zfqtfmQc9Z!*mR-+UUik6tW+a(%A@p~i*WK=k(Ze1Xg_v#Q^k{=4w|m@Vq4e&KZ;XBS-S4^q=CxgT#nkT$~X%y{#`wy>3Jd$X7PJ zX*eJ;)yks-`Ocijq)3@~{e@{k4<P<#S(e=%r`*Bj6Yi(JjS0!=M%ATN0OEp!JVqp8Eucg3zbRCk54ZZg z4@WpTLI6;B^Z!;CYxgE@VX-8x(y`=$(=Tt1E#1kVzjvUqz=@OCxE&fQIMB)NNqNes zVNLS+k|^TH{{XlS1&{?Z{gu7CBK1RlYWhgKKcpB!hdYZ@JwAplQ?HPk`{B+;V_hlE zv$+@m&%e&(tZy!S?=tV!?KQr2My$T8+jG9=_dk z(Uqj&3_BBLJZ-)kn%t!kfyQZ1o(%ZkLl1r5QI>cT3+Nq=0`LN+udwf?QW%+ks`LL; zT=rMczJw}Fi2g!Va@^1XRuC1SOF;WDkKBw+HOw3@a^|Rey#n}3qkP=64+*v}JU!Rn z++H6D7h<26E73F1S;j?KC7x^mTIFW>5M^TiMPrr6Gc2!$^F~SbStDuNwZ`txYb1LG zFHqEQ{};3U$O|!yS#^D=g@lu=jh_TST4U?uwV%)=2aPz1C`=7r9BZ2`lTHZP7@z?eAWpS$Wy_>Ba%@%a|#sqUs(GZowG-5%XU9IpIPNZi}l&Y^Lft z^;U*z!@!iuR=={)2 zcl2WBjUfH^a1+|4&6b88u9cnEe#GUf?5XqFE^b{Ud)t#1b1&=th6m{r_m=84%UJg{ z2EWNXesIrA^nn3pMIM)7Lp z4abA^X6zAt73&JG%VTWLFAFg~fb*hn#(=m3Z$<+;e5|87pf|6)N&Q?N$oy} zxF#p%6?ZfcCEC6oi3XQbggv{uRjjzAPX&}!Fzx|pDg`Lr#LN4BZPZu+5Xv-6e=>^) z1~+IBo4-76z*k_+L82kG219iK44MZ5gM?*827Tp5eI#X*yE6`~j{_7g7t~wrJk~}M zUH6u%GIR%V#}{VG+%%hWynNm3)?v%2HHdk_Jm-j_` z|7*1X-l$~&HM0FI;KXYWNcJ%bnWW<=Mub^EoF~Sql(Ofq2Cdec-km0!P+Z!dr)p;C z6~SIyStNlr_cupp38ySZln5=BGlr(hO$Fiw*%=E$o=8(5MQtF)iSk9#muS@vs5bOw z@nr*jUT~k}t`aDUILiN;mgwoU8aC}~x3vyfQZeM>z0_K}1t9E3lkH({S^f+oRmsRF zlmwb{#X@Emvw1omKbiSYqZG&Jrl8rgA^fupK;uc82CIIaI!!Mr+M%86KAe(jIU*%P2ty-4=S6JxL%SpoU?G=%kwd&h(AOB$+BB=i97W`T}1ZqX3%H_^Xq8wJyty0-M~VinBn@1Dz;0t4!HOc zV(tEwh4vflJ692_lcHE}`A+EXWzp3sUK#^h9IOy4@F&|hZspdzD;sr+#e*@!{E`p$ zSJXVP!=-ldE-G?a*;M<6c_n=&HLnD&YJQ$3Rs)}*Z(Nu1&5Ruukl=FRN_W7@qkay| zi~!C&%M;3)b|`K_C1#r(;XgZ8VrY_i&708X7vk)0=?4w7vIOHK*=k16^Yn=>AG08D zCu>}$s_)}XS)Bh^8BB@u1vTuW@VGg}oJsGaP34xecAPrcSHFS)B_%$}@TQoS%RCWf z$C$X3KHx);%@T(}lusQFnF_ptPFkYFSJpweUD?_zpg^FL|9f}K4#~c4{Ck=$aXDdY zoCWpwj(3}-wAMddVAh5xA+O^~KUMovsftNDZj%E=CLQ-R!NIGm2d76gtb3LVilr|XFcWJpT585GgEyDW|-8+Vl5tpWBAD}m* z(9SY3S)c>r|CRUEZ&7t^xb%R8N_R+$bV~~eNQZ)S51rBtI*6nUU4x`ZNyiZLk^<5V zLrBZe-JJb?-#MTD59hk(r#;tN>se3S`(FE5&sspXg&oT>EJN<@+G&aRlld?uY@WhS z9=%x4lq4eI3*xC*2y+>bU^pFmkWB{^#6ApV8IEIUYCH$hq$9#QaPG^p{BP}dira_I z00UGStBFbM7v#?e&Pbg*{3#-J4n6sL-7eLz7bU^qwP!if!4>GzBK zzDj~&*YIHV(*JND_Ikh*{&GsaJQd1O=mpuiyR0QyZYV z>Z8e1IvhMt+^(P*;k_5rjTMea__fR0AGg~9$1b6c>KyU@Q^2QJ z!l%5&6}AJN7(1U%C$2PNr)$Kcfe4I$7MZDvGE1EOaQBqn;?aA&+xUdRVe{DQ5$aya zUh43$x^XPUjVzzLFd#HoO~8WtGem&IGcGC!!5M? zwEgOa_jHKMQ4k>I^_$gQ`laqd^X=gF#gOwL*FIO+%-uZi-SdVM-kiAox1)x=;d(m2 zT?{3h3pdp27VJLc?RLN1V&p_u6yF1daWmyeiv;Bsq9VPe^7~&N%$31-*;Y91kPF2o z*6V(%7MJfy?1q5K2kWwIi9nB5fV_8(n)q2VPh}b|_KTHncb06sJ}~Qvt|W6)ye^qF zN9PkAfSs8n+Va1^5E5mlV~tnkfb*7KPRo#H9-G<58Hk{$TAQs4&-Q1Rm`k8Jnyw7a!uT+dSjxucm^A9PgLSca(RL~gCGQs+E13Fa#3G~hhZ^wDymz<}j4abt zQ{x2RVW=Zj@KhuEl-QYEp;9O#tw&JhT)POn&OAf;j%`)sz&FOwBk_vy7<-c@kq zrlNZ@g5NzqL)S6O$*A6CGP}~@Qif*|Q>Kyk?4W(3&@K3^yXw^8v!^=YR4@?(yY%*Zq+t z0u=RCaTsEWY(__K&&N#)cYJ*Cfb2dEwf0GKK`|8*x(y5T-P&g0u33#}+pjODgq{^J z@v9-tTP2q}8JR8DK&$-cbHH}FW633}*R(OI$4LVl6IGS+@TH~Jpu77(<(f8e`D520 zE!19!l5^!QRrW$=RA#{{W$$-%-uT@_7boBYU;*bd83S!weq)bB30S1{y2*Q?g8$g% z>1!a=e`ud98M`h|@_wc>!_3|YqVr{93U{n&>@(tdFZT%I*^il}YtDPlME|O$htNG1 z+DKvYAiyqsWH5hV7PK}9)q#D_rT)=*;#_iVV)X2?jJdRCLs1xajLkl|an}-?MDSC5 z+(48>Z;Pl;kmcTMAJlY+Z*jw#Xgv6hblZ!}X(t_2J^8u-DgNgI<00K5_WYD{AIE`t zqgtmkLI0JZ-jjJ$aN$z+AUV^TFb{ zhXnrD${1w_X#qGvfx2WmkNiD+*Z`pU$CFJV6aez*HqWM>1gJ>GJc_2|6nR!O=jlLJ z8r8jcvA&&gvLu}!+2-9&e+Tz7yopxycfUI}Y;{UDY-mteKcxx2hwakTbB9=6I!Jj= z6H6UMfAGI>-T3{FOnRyQz4M2u8<^;NK%2vG zXom$Aw!|yIR?0%8)PMteyl?uX-@dFR9C360wl902G8Ut$G7Cj*>Tj4nE@1J-|pMlSQ z9^16(_w$R{AQhcSJlcC(ea(l{Zk){Ylux1`H#bx7@N7GLcn`v*q0f!xP-?QHT!H*{ z*`|lUpZ3t3YFDp+fOD+zWrbt@_+tDd3iOn5pb#fFA_n=BPjuYG^s`O zi>o`YV4{5Z_1QPAw|Y#JHL)tQ50>BaMFrb)Jm|<~{$&4PrO>-W7nP(bALt^ncsR)x zmekh*mE+k@ia%DzINYKbd|Me;TDM_rH*20H(083k50y*OA6!W?NmdQ4j~=Ucm#TL+ z7f_Dh{qSJ!;XzvCB^72)D%8;=3LZvKMcbu9^9a2*gWIlS zVr?S4L|FF`;x)SokuEnmEnn4qS1^8Wc<6?l65Y*#T;&b)){u|C%I%+wAlPw?I=W;& zcFgOZ9MeWrM;{~ZSz1%H)OViWMD3-M4pMa%yO36q^8nGZ`3ppUq`q`}b#BLz(f;NT zs}EnB9Xe{?sQ2WXeUCT(S>=wzqQ((!+RSru>JrtkVTj7R%r6`X?rsA4xkZF>b5(Jx zVriP$0(b=m4t0iHabT(>XAPXF)zAm)*(2KuU%kWE&5rr>m%2pzs!M(jH)?M^OCqxn zEu2%Sd(*-~lqJif50mYm7u2tJ52|wyTmOox@9-rX=ZK3MSf%|fG_jZvu^?L^R0ZC$ zISDoXY7?Nw|$BTf^EZMgLUdX z=d_WnE!|Y7g?v#@I{9vzvmKP2OL{vDig1jJ+H_Zj?l0!wU4wbnNi#VEToi>qT% z@Yn$>k4}!O{FIx)ku?#nLL%%o0rw}FeOHY?I=?6XnpOYP6|Vn56Tepr5`OSjBE z?yg%=4S1H?x#>&4p}Df(jUKM}+4LJj+qpkhYP!F04H{ZWT}c@@Jmo>g8#|VE7q&DM zvQHYu0S79r-5u+d1sAUOint^=)2_Kn?~RgPC#R-k>7@9ZYXJ}wZ1YUT|Pu_l3 zqVGe6qat;Ic~HR@C2h%}BZ7VC$0@wkHmXB!PngFbJRyO*lbkZucph9Z%uLp6tWwH( z3SPnYNZS#^K2+p9bw5j6uBSpcrlpeo_ELv<@Z$T64$_<|zidghUt*cYY<)?& z_u3yn2+YTis-g&8u}r@?B}V6K$^RC~wCPSDF3x3`E#$H;esP;PE8;2z8R# zTyb0=v}QS~=2Cv8gp=Hc3sITCNI^e0lwcX`6mkR`6Fs`_7itB*M*=SZCbWV)hrpEyu~Sn;i)jDbFS4Ilcf4s8l5G9_)>kVM@wRBjn^$aOP)6? zOsOTHz9rS?>dOsO?LA}{N8?|uCI9go7;yhBq>4db6r>QtGPrIeE3B3WY;47m6kc1} zr{P`~bWW%CyHUsCl!VF#n%XIE7=}`vDg0PXm{&+3-)(S*^oi~Y2HhVwYLT0ffKp0{ zsl4&(mMq$ z8~OL)q_JLcne=a*kQTXtkhHJb@2g$~>f*rM2i!#yFs3slPg~WoF7tK6ydZL81XH8Z z4>npYh@JUpXK6-=KG4;9P>;D292R05Fsfck1L8=sg`Jpx#2m&`YSj z`CvkD13WBQx5krTIu|wXhwTf|{M^KBxzcs_+ICyLhuA`Cl-!6^qJzZ{Kg)uJ#d-6( z7Aor^Ogg)}Ls%&1)6v!f;s0tHF~9CTV4d)SAFn{E(>U!7zwjoH?jd1BP{qbw?BMQ- z=vJ^zU^%|EU%;Mi(3hVLSE^2wy#Zw%sf_(XZHDR4!;`b2wNDza{5{xY@_5&X`LUq6(T z;@=d@(P1swjebM-Ix=qAh4nFB<{0qdS-Vx8_~p6eWY$oP(C{Bt4{1=8WAwNtsC-!^ z?`w(Ut*+OqFQntE`ijJPHz8{p_i-d4hdrYCekg6Whwz)4DJiJz>2jkx^$gZw@)?(K zZnH$LU)U1{l<;;Fi5cHu?&HeSuFWoV&G?E~!N=BI7R2fpU~0UQi9MV}Ky|U%;P4}n z#^!JBL#BaIuC;c25h&jhS0|#{;7o$V_J0~w7$e9CHr33@M!INaVB0c&B5lu!49u3V z7O@ zbFA8RFtGk;&GycgOlht&)1}h19ff8vU2WV%lwr z3}=%DA;qwtMP9&zy5_6uM9wi&PQ}gMLZoHEcYM+^3*fBYJ)0TaME!=^D&`7Lw(y-T zo@KU9#^nBd1g8aY_KG%N_tvB1cR-G?Z8T3BG}~4sjttA{W1IyOE5Cx`k2!4^ru{zT zF7&mh{f_>s=0Fg;Y(IbD(D}P1<>-sIw7uw>GdT_jn{QBqr_SP*4b#Det0wb}!8uBs z-EzNsPIVFA&V2TNFG*lb*h*EHChZwCa?Uwo*$=_Q?grlZDVILu6*dt;LnF}pcP~H} z*eCH)a7@4Yaz-QHuoCSa|E7F2;T8W*E1hpP9%J|G(#eg5wI0>Mxyd&@x!#r(>zkj% zmQ}J0)PFDX;nb}T7cXx_Y~%!7DXkX-0T36TyGtUU1Oy9QCSRY#c?Zq zTc3xsZ{C}g3$!qio`c%oSj7$+H?5I^5{1t>Zs^mmmac^M(iPjq9Zm{<@h;fSaz-Z1 zH>$3NPO^s3$JVun=mVE^V2w=mz%w64^X{=6r~2g-josZXOu#E(u2bV3li3vmvM)Ck zxYGpf^iT|#chNiT6pKgnucWRywH`vZ<{^1lbW*wA9mv=g5~_^8KpZ@GT2Ll%>vU8f zW4aabkB=`s%YSLua`bw6RA5c}u}Ql48I3FcJ|mDrt2_V6>;m?wf3E*42i|GO5uN(( z3R<5}eIiz9*)%5Et3Pg%#5LRFHQtlW0CMWcwyu9;f6ndLJD5Loxsu^eH;^oz9s*u% zD*5&Ei-G3A{FJkJe@*&qW!bLqx6@S2X^i2Y2R0Qr(wJEfcJ@r5%}4gjWqeU7G@m@Y z5~w2QfMcOYBrGb^aW-mLAB$IIg!wxQD6^$u30TT!{nUy>ts6%Rp&tZ(r4#XNiW=UZ zaJ+sg*dRlq6)>$~>Eld$0LpUX{)VnW-?IsLPsFXt>Dbxu6iB2>`8FmjJ?B<@(=yc= z*)rESAfc4y)$=r?P_vC|;?9=+wtrwHG#R3@FgYm}hlyIGU2Ph2JX_eoSva0CYWgid ze4WFK+Hp&c@VEVijCxrY%k2KLxC^{LS;@XR6LupeHq-qX$nMd2OQX; z)ZR0-x&iXL&Vor4AiY_tmUIFE9kwuQN7(_=gBM?4my=|eC8Eyo6nN<8DkmgQ8nx)s3KB^}#MOwfZEn|}2RRldk*GNjUe0ZVMX;O3s-yk}gfz@wnNGOcbi~%G` zFs?^y@SYHOQR{GEH7PoqJ zNeZ;M0KgY3~Q4j20sU>)lyZ@bWrKLDJ}1SXuVO zAO8qCI7BD6QKDTQLUd6~D(yfmMtE_-5#I)g9)c72z?b=ZF{>=614cXg5FvDHi7@i7 zmar(sV{Sl9x`hHtI;glu3t8Yflybp00V)E2z3NCBUUgO+h{pN;m>ea;3vuy05Tkh8in2B z+>{z2C^}fKHnX~|e3t1DRS5hr3Zqv-krH8%VfR3vIDa{SN`$ZrZu1dK0$MM@#rYlW zMc`uiW46)f=6K%=w96TQDm1+?A49#`?3&PkP*w|KDJQW%>aiC?J}yv=b&$ep!+l0M zQi;TB;Z)0`!GDyAW`IkJ8;BuB;9F5xR7;Opf!2nG1gSw(gq#ijYVWIt^;;+3P=>TI z>mS;O;~3i(#6e}bRo~ED(KT@Hh-WC$zLSzo34Nz;#J`|)^Za)$qxfgqV^&X;9|F_n zMlfMsyxxpdIoV6>+L=XYBe+7D!#2_2h8Z5N#ElG%I0ksev}~ihe>Z+V~cX9rjEW(ZS-6d%-3Ph=VJJcHy|}YwlyN8U5O&3uC_~6! zj#Ay3Z{ZI(7|C*-)ZOtoU^P&_n3ZvF=s6}YS{&LL8W9#bWwxH$xQ3pgT)=cZekdp` z8d$V|egBBTIS*LD2Rvf*L>Xg(aOr0UOGc6B4#14=Ma}sSo-Y?7n}vBNDr-x=lK73eEQ-L) z-VYRZW7on1a9Q=!A9azzB*IU=XqUI+HWG{3#oeFsET8Um@Qnp{@$Ig~v+b@WY>sK9 z*rA6!e71K(XU;nZx3lghF*4CaGbTXJUGB5F(R?pDJ|_d#*++4z{}Wb6JRNro0O2sm_x*K;BZ-{S&TV8XWu{n<-xW*C4{t1n;u^*`Z!8q=0$ zngSRNHs2TDE-^6tXSynhI1b211YO`z{2A}aWby;^GzCp6`aj0{tDpZ5AC~yuF(~`V W5|w5~`~17FO+`^dq2h&k`2PX<4uK&6 literal 0 HcmV?d00001 diff --git a/backoffice/img/icons/Agreement_01.svg b/backoffice/img/icons/Agreement_01.svg new file mode 100644 index 0000000..27a8a06 --- /dev/null +++ b/backoffice/img/icons/Agreement_01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/Bill.svg b/backoffice/img/icons/Bill.svg new file mode 100644 index 0000000..b891cd2 --- /dev/null +++ b/backoffice/img/icons/Bill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/Document_Save.svg b/backoffice/img/icons/Document_Save.svg new file mode 100644 index 0000000..7262b20 --- /dev/null +++ b/backoffice/img/icons/Document_Save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/Floppy.svg b/backoffice/img/icons/Floppy.svg new file mode 100644 index 0000000..d85ccd9 --- /dev/null +++ b/backoffice/img/icons/Floppy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/Folder_Delete_01.svg b/backoffice/img/icons/Folder_Delete_01.svg new file mode 100644 index 0000000..c1b0566 --- /dev/null +++ b/backoffice/img/icons/Folder_Delete_01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/Folder_Find_01.svg b/backoffice/img/icons/Folder_Find_01.svg new file mode 100644 index 0000000..7d4ef63 --- /dev/null +++ b/backoffice/img/icons/Folder_Find_01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/Save.svg b/backoffice/img/icons/Save.svg new file mode 100644 index 0000000..ce6bfa3 --- /dev/null +++ b/backoffice/img/icons/Save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/access.svg b/backoffice/img/icons/access.svg new file mode 100644 index 0000000..ca4578c --- /dev/null +++ b/backoffice/img/icons/access.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/access_white.svg b/backoffice/img/icons/access_white.svg new file mode 100644 index 0000000..5ecb2b8 --- /dev/null +++ b/backoffice/img/icons/access_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/address.svg b/backoffice/img/icons/address.svg new file mode 100644 index 0000000..4d51035 --- /dev/null +++ b/backoffice/img/icons/address.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/address_white.svg b/backoffice/img/icons/address_white.svg new file mode 100644 index 0000000..a5de7d7 --- /dev/null +++ b/backoffice/img/icons/address_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/apps.svg b/backoffice/img/icons/apps.svg new file mode 100644 index 0000000..eef3c30 --- /dev/null +++ b/backoffice/img/icons/apps.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/apps_white.svg b/backoffice/img/icons/apps_white.svg new file mode 100644 index 0000000..f37f596 --- /dev/null +++ b/backoffice/img/icons/apps_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/archive.svg b/backoffice/img/icons/archive.svg new file mode 100644 index 0000000..5dc21ee --- /dev/null +++ b/backoffice/img/icons/archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/archive_white.svg b/backoffice/img/icons/archive_white.svg new file mode 100644 index 0000000..2cff08a --- /dev/null +++ b/backoffice/img/icons/archive_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/calendar.svg b/backoffice/img/icons/calendar.svg new file mode 100644 index 0000000..6b51e03 --- /dev/null +++ b/backoffice/img/icons/calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/calendar_white.svg b/backoffice/img/icons/calendar_white.svg new file mode 100644 index 0000000..c738ec5 --- /dev/null +++ b/backoffice/img/icons/calendar_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/club.svg b/backoffice/img/icons/club.svg new file mode 100644 index 0000000..8a941e3 --- /dev/null +++ b/backoffice/img/icons/club.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/club_white.svg b/backoffice/img/icons/club_white.svg new file mode 100644 index 0000000..5325dc0 --- /dev/null +++ b/backoffice/img/icons/club_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/clubs.svg b/backoffice/img/icons/clubs.svg new file mode 100644 index 0000000..0a7d497 --- /dev/null +++ b/backoffice/img/icons/clubs.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/clubs_white.svg b/backoffice/img/icons/clubs_white.svg new file mode 100644 index 0000000..7184d28 --- /dev/null +++ b/backoffice/img/icons/clubs_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/code.svg b/backoffice/img/icons/code.svg new file mode 100644 index 0000000..c3b4f28 --- /dev/null +++ b/backoffice/img/icons/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/company.svg b/backoffice/img/icons/company.svg new file mode 100644 index 0000000..4b65899 --- /dev/null +++ b/backoffice/img/icons/company.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/company_white.svg b/backoffice/img/icons/company_white.svg new file mode 100644 index 0000000..ed26c0f --- /dev/null +++ b/backoffice/img/icons/company_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/cube.svg b/backoffice/img/icons/cube.svg new file mode 100644 index 0000000..31b3129 --- /dev/null +++ b/backoffice/img/icons/cube.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/cube_white.svg b/backoffice/img/icons/cube_white.svg new file mode 100644 index 0000000..9a78edf --- /dev/null +++ b/backoffice/img/icons/cube_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/cubelight.svg b/backoffice/img/icons/cubelight.svg new file mode 100644 index 0000000..ff786d4 --- /dev/null +++ b/backoffice/img/icons/cubelight.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/cubelight_white.svg b/backoffice/img/icons/cubelight_white.svg new file mode 100644 index 0000000..c7965b6 --- /dev/null +++ b/backoffice/img/icons/cubelight_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/dashboard.svg b/backoffice/img/icons/dashboard.svg new file mode 100644 index 0000000..c5f36cc --- /dev/null +++ b/backoffice/img/icons/dashboard.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/dashboard_white.svg b/backoffice/img/icons/dashboard_white.svg new file mode 100644 index 0000000..c6a7dda --- /dev/null +++ b/backoffice/img/icons/dashboard_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/documents.svg b/backoffice/img/icons/documents.svg new file mode 100644 index 0000000..aaec4c6 --- /dev/null +++ b/backoffice/img/icons/documents.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/documents_white.svg b/backoffice/img/icons/documents_white.svg new file mode 100644 index 0000000..94d71a7 --- /dev/null +++ b/backoffice/img/icons/documents_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/download.svg b/backoffice/img/icons/download.svg new file mode 100644 index 0000000..eb20956 --- /dev/null +++ b/backoffice/img/icons/download.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/download_white.svg b/backoffice/img/icons/download_white.svg new file mode 100644 index 0000000..100cebf --- /dev/null +++ b/backoffice/img/icons/download_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/duplicate.svg b/backoffice/img/icons/duplicate.svg new file mode 100644 index 0000000..cebaad8 --- /dev/null +++ b/backoffice/img/icons/duplicate.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/duplicate_white.svg b/backoffice/img/icons/duplicate_white.svg new file mode 100644 index 0000000..a643c74 --- /dev/null +++ b/backoffice/img/icons/duplicate_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/edit.svg b/backoffice/img/icons/edit.svg new file mode 100644 index 0000000..c0bb9ac --- /dev/null +++ b/backoffice/img/icons/edit.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/edit_white.svg b/backoffice/img/icons/edit_white.svg new file mode 100644 index 0000000..bbbe89f --- /dev/null +++ b/backoffice/img/icons/edit_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/excel.svg b/backoffice/img/icons/excel.svg new file mode 100644 index 0000000..6c14cc2 --- /dev/null +++ b/backoffice/img/icons/excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/excel_white.svg b/backoffice/img/icons/excel_white.svg new file mode 100644 index 0000000..7693393 --- /dev/null +++ b/backoffice/img/icons/excel_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/file.svg b/backoffice/img/icons/file.svg new file mode 100644 index 0000000..6df51bd --- /dev/null +++ b/backoffice/img/icons/file.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/file/dir.png b/backoffice/img/icons/file/dir.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e3c0f7a86c11aa1fcf421ea51a3af8b34d1afa GIT binary patch literal 6937 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 literal 0 HcmV?d00001 diff --git a/backoffice/img/icons/file/doc.png b/backoffice/img/icons/file/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..8e43190813bc7f09fad8d4cc8d5998249b1ffa7e GIT binary patch literal 6455 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 + + + + + + + diff --git a/backoffice/img/icons/file/folderup_white.svg b/backoffice/img/icons/file/folderup_white.svg new file mode 100644 index 0000000..74fb046 --- /dev/null +++ b/backoffice/img/icons/file/folderup_white.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/backoffice/img/icons/file/jpg.png b/backoffice/img/icons/file/jpg.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2999cdf8be9e71bee59468502897dbd743cbc1 GIT binary patch literal 6297 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 b>>2zY@w+S`gh`U%00000NkvXXu0mjfe506! literal 0 HcmV?d00001 diff --git a/backoffice/img/icons/file/xls.png b/backoffice/img/icons/file/xls.png new file mode 100644 index 0000000000000000000000000000000000000000..ceabc7d00786e914f82fd171b155f6a12460fe10 GIT binary patch literal 6065 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 UUWti#UWNdQvZ}DJ(&nN61KZCx`Tzg` literal 0 HcmV?d00001 diff --git a/backoffice/img/icons/file/xlsx.png b/backoffice/img/icons/file/xlsx.png new file mode 100644 index 0000000000000000000000000000000000000000..ceabc7d00786e914f82fd171b155f6a12460fe10 GIT binary patch literal 6065 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 UUWti#UWNdQvZ}DJ(&nN61KZCx`Tzg` literal 0 HcmV?d00001 diff --git a/backoffice/img/icons/file_white.svg b/backoffice/img/icons/file_white.svg new file mode 100644 index 0000000..3e04bda --- /dev/null +++ b/backoffice/img/icons/file_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/folder.svg b/backoffice/img/icons/folder.svg new file mode 100644 index 0000000..f1f6e4a --- /dev/null +++ b/backoffice/img/icons/folder.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/folder_add.svg b/backoffice/img/icons/folder_add.svg new file mode 100644 index 0000000..4f8b21e --- /dev/null +++ b/backoffice/img/icons/folder_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/folder_add_white.svg b/backoffice/img/icons/folder_add_white.svg new file mode 100644 index 0000000..728bbae --- /dev/null +++ b/backoffice/img/icons/folder_add_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/folder_white.svg b/backoffice/img/icons/folder_white.svg new file mode 100644 index 0000000..25baa23 --- /dev/null +++ b/backoffice/img/icons/folder_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/globe.svg b/backoffice/img/icons/globe.svg new file mode 100644 index 0000000..9af64dc --- /dev/null +++ b/backoffice/img/icons/globe.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/globe_white.svg b/backoffice/img/icons/globe_white.svg new file mode 100644 index 0000000..f0c2dea --- /dev/null +++ b/backoffice/img/icons/globe_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/group.svg b/backoffice/img/icons/group.svg new file mode 100644 index 0000000..a74f7ad --- /dev/null +++ b/backoffice/img/icons/group.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/group_white.svg b/backoffice/img/icons/group_white.svg new file mode 100644 index 0000000..72dd9db --- /dev/null +++ b/backoffice/img/icons/group_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/home.svg b/backoffice/img/icons/home.svg new file mode 100644 index 0000000..f6b8f1c --- /dev/null +++ b/backoffice/img/icons/home.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/backoffice/img/icons/inbox.svg b/backoffice/img/icons/inbox.svg new file mode 100644 index 0000000..034e942 --- /dev/null +++ b/backoffice/img/icons/inbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/inbox_white.svg b/backoffice/img/icons/inbox_white.svg new file mode 100644 index 0000000..1d98ae9 --- /dev/null +++ b/backoffice/img/icons/inbox_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/library.svg b/backoffice/img/icons/library.svg new file mode 100644 index 0000000..0a917f3 --- /dev/null +++ b/backoffice/img/icons/library.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/library_white.svg b/backoffice/img/icons/library_white.svg new file mode 100644 index 0000000..3928fdd --- /dev/null +++ b/backoffice/img/icons/library_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/license.svg b/backoffice/img/icons/license.svg new file mode 100644 index 0000000..54f0fec --- /dev/null +++ b/backoffice/img/icons/license.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/license_white.svg b/backoffice/img/icons/license_white.svg new file mode 100644 index 0000000..2563f36 --- /dev/null +++ b/backoffice/img/icons/license_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/list.svg b/backoffice/img/icons/list.svg new file mode 100644 index 0000000..ea3f0e2 --- /dev/null +++ b/backoffice/img/icons/list.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/list_white.svg b/backoffice/img/icons/list_white.svg new file mode 100644 index 0000000..b57b752 --- /dev/null +++ b/backoffice/img/icons/list_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/log.svg b/backoffice/img/icons/log.svg new file mode 100644 index 0000000..886dd3d --- /dev/null +++ b/backoffice/img/icons/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/log_white.svg b/backoffice/img/icons/log_white.svg new file mode 100644 index 0000000..3e443fa --- /dev/null +++ b/backoffice/img/icons/log_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/logout.svg b/backoffice/img/icons/logout.svg new file mode 100644 index 0000000..da64de0 --- /dev/null +++ b/backoffice/img/icons/logout.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/logout_white.svg b/backoffice/img/icons/logout_white.svg new file mode 100644 index 0000000..3feb1b7 --- /dev/null +++ b/backoffice/img/icons/logout_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/menu.svg b/backoffice/img/icons/menu.svg new file mode 100644 index 0000000..1a247ab --- /dev/null +++ b/backoffice/img/icons/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/menu_white.svg b/backoffice/img/icons/menu_white.svg new file mode 100644 index 0000000..222cc94 --- /dev/null +++ b/backoffice/img/icons/menu_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/newspaper.svg b/backoffice/img/icons/newspaper.svg new file mode 100644 index 0000000..420b45a --- /dev/null +++ b/backoffice/img/icons/newspaper.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/newspaper_white.svg b/backoffice/img/icons/newspaper_white.svg new file mode 100644 index 0000000..472b389 --- /dev/null +++ b/backoffice/img/icons/newspaper_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/numberlist.svg b/backoffice/img/icons/numberlist.svg new file mode 100644 index 0000000..33ac90c --- /dev/null +++ b/backoffice/img/icons/numberlist.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/numberlist_white.svg b/backoffice/img/icons/numberlist_white.svg new file mode 100644 index 0000000..e98d4aa --- /dev/null +++ b/backoffice/img/icons/numberlist_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/package.svg b/backoffice/img/icons/package.svg new file mode 100644 index 0000000..0b6a94d --- /dev/null +++ b/backoffice/img/icons/package.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/package_white.svg b/backoffice/img/icons/package_white.svg new file mode 100644 index 0000000..9a40a7b --- /dev/null +++ b/backoffice/img/icons/package_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/pdf.svg b/backoffice/img/icons/pdf.svg new file mode 100644 index 0000000..43a58e1 --- /dev/null +++ b/backoffice/img/icons/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/pdf_white.svg b/backoffice/img/icons/pdf_white.svg new file mode 100644 index 0000000..94dbd95 --- /dev/null +++ b/backoffice/img/icons/pdf_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/pdfexport.svg b/backoffice/img/icons/pdfexport.svg new file mode 100644 index 0000000..49169f9 --- /dev/null +++ b/backoffice/img/icons/pdfexport.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/pdfexport_white.svg b/backoffice/img/icons/pdfexport_white.svg new file mode 100644 index 0000000..49169f9 --- /dev/null +++ b/backoffice/img/icons/pdfexport_white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/pictures.svg b/backoffice/img/icons/pictures.svg new file mode 100644 index 0000000..97bb690 --- /dev/null +++ b/backoffice/img/icons/pictures.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/pictures_white.svg b/backoffice/img/icons/pictures_white.svg new file mode 100644 index 0000000..9142d7f --- /dev/null +++ b/backoffice/img/icons/pictures_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/plus.svg b/backoffice/img/icons/plus.svg new file mode 100644 index 0000000..08e85b5 --- /dev/null +++ b/backoffice/img/icons/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/plus_white.svg b/backoffice/img/icons/plus_white.svg new file mode 100644 index 0000000..22714fe --- /dev/null +++ b/backoffice/img/icons/plus_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/projects.svg b/backoffice/img/icons/projects.svg new file mode 100644 index 0000000..1e8e1e7 --- /dev/null +++ b/backoffice/img/icons/projects.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/projects_white.svg b/backoffice/img/icons/projects_white.svg new file mode 100644 index 0000000..ddbd36c --- /dev/null +++ b/backoffice/img/icons/projects_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/remove.svg b/backoffice/img/icons/remove.svg new file mode 100644 index 0000000..e459477 --- /dev/null +++ b/backoffice/img/icons/remove.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/remove_white.svg b/backoffice/img/icons/remove_white.svg new file mode 100644 index 0000000..77e856e --- /dev/null +++ b/backoffice/img/icons/remove_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/squares.svg b/backoffice/img/icons/squares.svg new file mode 100644 index 0000000..8e084a0 --- /dev/null +++ b/backoffice/img/icons/squares.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/squares_white.svg b/backoffice/img/icons/squares_white.svg new file mode 100644 index 0000000..489f802 --- /dev/null +++ b/backoffice/img/icons/squares_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/target.svg b/backoffice/img/icons/target.svg new file mode 100644 index 0000000..72b5eb0 --- /dev/null +++ b/backoffice/img/icons/target.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/target_white.svg b/backoffice/img/icons/target_white.svg new file mode 100644 index 0000000..b02c6c4 --- /dev/null +++ b/backoffice/img/icons/target_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/upload.svg b/backoffice/img/icons/upload.svg new file mode 100644 index 0000000..20dfeb0 --- /dev/null +++ b/backoffice/img/icons/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backoffice/img/icons/upload_white.svg b/backoffice/img/icons/upload_white.svg new file mode 100644 index 0000000..367855a --- /dev/null +++ b/backoffice/img/icons/upload_white.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/backoffice/img/icons/user.svg b/backoffice/img/icons/user.svg new file mode 100644 index 0000000..37b4e3d --- /dev/null +++ b/backoffice/img/icons/user.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/icons/user_white.svg b/backoffice/img/icons/user_white.svg new file mode 100644 index 0000000..78d94ca --- /dev/null +++ b/backoffice/img/icons/user_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/backoffice/img/logo_512.png b/backoffice/img/logo_512.png new file mode 100644 index 0000000000000000000000000000000000000000..37e2068779f8f5eaf709c348ebfb46fbe6d6a2d6 GIT binary patch literal 31456 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 Sp|^nNkBXv(LbaTE@c#jenT=Th literal 0 HcmV?d00001 diff --git a/backoffice/img/logo_512_xx.png b/backoffice/img/logo_512_xx.png new file mode 100644 index 0000000000000000000000000000000000000000..b82da90b4d4f1d326c712fb74a53447b5740ec38 GIT binary patch literal 14719 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 N$V)3pl}i};|1SN3pCF4 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 literal 0 HcmV?d00001 diff --git a/backoffice/img/no-news-img.png b/backoffice/img/no-news-img.png new file mode 100644 index 0000000000000000000000000000000000000000..3411fda1b33cdbefcf0d0219fd0b1a9569ff7571 GIT binary patch literal 17922 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 CpQ{)E literal 0 HcmV?d00001 diff --git a/backoffice/img/toplogo.png b/backoffice/img/toplogo.png new file mode 100644 index 0000000000000000000000000000000000000000..37e2068779f8f5eaf709c348ebfb46fbe6d6a2d6 GIT binary patch literal 31456 zcmV)^K!CrAP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3*rc4N7Ah5us|9s=?KhJ(14XW-%c+o04Hy6k?> z%Tkp{U6KeV?0_qG{_8)l`wzZKPR-?Ft@c_yU%BTV2Tz*+e0?5+&+q5=SNyvA%XN3> zUoQurcub#P>-ju}!S(Xv1D3z8&tI=QTVLa}uYtlZ^ZKNj^?ZLV@@t?JKi9+8@2-D+ zVAP+s^Yy=ez3F@K-+#|WFm_?Q6kR+iB>#TK&rFF`q@ISZyq_WJN_o$9y`=E>__<%^ z_$`38{~SNRzTT03gyS>N_qOV9ar(L*%5T@xU(?55RutmbTjGxw-mm35lz)%ky}R9e zKD!&aI>J@IHub&5_l!4E7&*Ot_hw7mER_j&NYe<`tv43-z> z#s-IrAVMa|7;EWG!|5H6q1#5$(4R?>J=6g&or4m_XQF3-r#>ikkA(k8d%H5C5{f~KbMEBp#Tl`bzoKpAykvXT-{gk=C z=j{(!+vCA)dI?e&5>pT|(S9d}xDNsJZGxBOwMhw!`1L}Y^0}MJU8AqHSZe7_ja?$k z$Z3qz-SNlolhbA6ywzsxB{f@lN7hziUusP*+}C!mI>iG1+3n? zCVh^5TDUuowUTWz)`;M8CM)_rGrY8npHSqjou3WRw$EjoYzRp|)q9h@C zZJNl}L~|Yx5`5nv``PhE)nKOSOYv(+^ckJo!L&;0t)AOnfo+Fv+78^UmRjeu>8@oU zwiAjQW<8mx*v?^`Qrf6<)7|xgEELkba|f#cm~FzodIPiWS%kE0S8ImZJB_h>$Nh3Y|F$7{(4=TZK&xW~qQiJLHU3@O`n3wE4N% z7-MS9#)5ujN{)?H{s>ZmqnB$SpQ%IY72gvd=aeWUvS6X=+3kEAdlw3frfIx_l zYwWuW@ED{bQ>z45y3nA<+93%lTU~y@lx%mAuu-9oTkPHm+}JL*p$M*>d2Y7FRE1K% zs1f$QD-9Bt@qx0cxqqdl-+GQ?mNS#{#yHWjDTR9g8=fuvDKfbL#QhM_ltR5dOuz`1xM0Yd09%D<+#-T(^aP6U z<~CDjDj<@`QTdzpsZwdZCIl+e)B$*7sTNHJag7We36@=lYj7%bGwY-dSzzyMCc}3R zr?oDKVog>78nD?5)%i`yPKuXMu-kPVkOH5v*bYMG!^;)`@ajjWem4>8Mr^|n_$J7d zmTn_0)&{!A(dpknid+#WSJVb|s7fg|h;qJZdN8BcHAR_*2D&qh8S19wn7Q8O=~}6M znzlB#03(Qc3O##*P9d6X$bbm-2BZL@d$tU|BOf7za8oYlLSU%!0ZP$qH6ALv&|Si4 zbi{-K5HAQAG$viiRuhh+vh%DWL~{}@cGf|2Ks>D~?ysbornTOQfz3i0#j;a9D3`1C zfaYnop>04hs0Qo=%Ad|@7hLJxvM+y%vijgr!oH z4QOLkJx1uhs#YjrI=^33(Rx#1-M3nqEa%1R8_`|cfWH84ClG{y5v}Nd>HwmmgQXrW zy+S3jk&KKnd|DimZM{d}lFGJrPNKNbfFrxk@@ZS9CdpXnte4Lg#+7DK@$lz}xF-}y zpc3mS@$_vJDpd;fF8;Z|#F8LLG}^UI8Wg_;n$AjZQJydm*xqRfO+J^MY$G1YKEcuzNI=lvqBgUSw{S!q(IBD zQ9a;3!ODIDYB1nE>il)#e?-y+3fU0S7;0j3W4P457Ru;%tfy)sLQ{aZ=+u=mv7>(> zK+N&Uz+f{Z8PKTOZ4YZv{;Zo`n)Ct1MF*1oLjm`Jvg!x5wN5ewC#nsQIpDuAv7jH3 z8gLfF0^MP_^ALKL4Xk)EEIUbgqFwr@iU8`5u4Q;7XzO`3I34Yj@N4XQ3(wc= z@1;h#j!=m5D(EU06+{H0&af!J^(2vsfR~k)Lies>xT76V(J0M^a(m}7a1wep#tu%9 zaDWHK${t|qQuAmyxXxGx7>@!)8B&zjS%HYn>PP^C&_kR6J&uZ{Md?PA z2JW6(L_OyUgm0h71nfAo-@qY0V6&-CksSqw9I*8Uz9S618w;J3#EuI#kZJ-W@c@u3 zOGdPlJV*-pwyD^Cpx228*b{7-;QcKC2JPe~gV#u)x_s3Kd8m@I4VNcTR&>^8^ggmh zWNJWLY~tGWngEXnAi({%ic%qE4dK}x7|yi} zbZtJ2qr|UN3>vcA z6&~a4BsWhrFUnD7)Nw7mU-&TEmnTSyH3&B_gszW64*(;_14$LdfK4<6A`kY)$kU#kJz1dl zpGhLC5qX6C2eIfz3d8|?xI)StWS+zDK|r3$il`JYmWGGQ!fRNMD8cWjZsq3DXh3mJ zo?PP~fuam7V~vxneW5^(>;-i?ctlm=e}IC?F6bJ6gIHZBAmxBd6#|sDa=0=q3%jvM zr%Pi)Zs!n5S$4n>3dSGfwi~iFQsLF3+2|5bHnaCckf~xYdoE-@AH|7-(($nvJW9x~ z4qG5;kSI$MpCT8ECyA`3jw%;Z0u_s5cRJ^g&&7UA7Z@-*Q3LbnaEOXu7{}LDVB@9N z4Lbq%Q7yYm0HTois0WYO_RwkVk$tBR3a#clHS(dj+5Ks8m$tBV38+Opt1JCUpjSh1 zDw}CI1S(>LvE?ia(_wcTOE=U8Dl|$m!WUA&d=4=rVU64!H)6059w01o8W9me!-QSG z@X;X7ItY2KagE;K^Qm=I>js-cTJP{Hq9;)|h^dfGG=yzN)+C@8$`HT58imEq)o}u- zsuR=}o^e41%Z!ourdtm%RP7%AYN|B^yKp+@1Y^U)of;Lmvl&uNZ9g413hr#T~G+=|2;s9|{@;hkHfUFT@ z;>K>$nS@{!+0j`@H^eL12NVt~`e1m2lIk~v|MKYcgvA1+3}BccnfoGYW&~UbaJKk@ z5bE+7JxavUJCZyACo-tWI`4}ZrLK;|YbiQam=T)B7E$7(FXDtjGQ3hZNS08tYw>-M zpTW_<1e0$++`mDG6&fL#h+Oieke>`>5v%w%>l?)gpb{t9^RM8P-9$LLgFwk4rjf^? z%4T6dB)Qg08X|Kb;@4{6(S-)c6e>64Kd^w575O4~p!HNI>LgU~>jGmUoq`;jMub z9YH3|PCe5jQ92Gy#v4)NJHOL&vR?zlLKT*b>7k;Nh@Z>?QjvVTi{*85ApmB0GU{VNLeU+FjZ&kB?evGjffZ-V8r@VOXLqHDAvi3oKk zVkBjV0>vq_d0B&~5)1?fp^&ozt%Q@)H2!JQDdc%$Zc8&9ac@*pIfdJ_jqj8C*lGvPE`|L#9w!U~A~s18p)xOjKhb zW~j1~^8Ta=)GCg!L>=?pkkUY0;xKjK$4mHq)?k^TlKzyYe#~ozMgb#=dgvs*KKSpd zBa@>*is5KkFd|jDZ;?sdx(@Gf@g5AMB?S7qdy2Zxy6t5zz5#ExqYDV1qJ^M6>&SD^ z2vnF30Zyd!bsG?n*#rdPW`PwI3^Bu#vtB8LPH*V6#;YUn$vRK8T&3uxVp)0btLXfR zNI*wS?bno@sWOK{yBB!zv8&UX-VlLc2ovX~8V9uzSeP4wbZB`>Fzz3=ozGR0vZ*!I zthzxVSR7oZMk=l+frCMZ%`|Ih1&?L=W0k5CYKl|`Mrf`|P~0Gn zQ;deLOWGjSlLjrPquL^DSw29$ll=h&tD(*fIqE4fkr!^0a=057u>@mdl&EXe@Wf_N z*Fp88a%ws#VN-O>V(NpWu%a{hEq~1_7up)Qa6mEGBQ!MJSvb6YbvVe5X=^+z=sJ~P z(ud7kQFpo#65%{&!Vm!=(9w_;^BQ44hMF@NkXUtqwI{Gp-#tWcI34sWHLUwS9vUqy z2hYJGq1>kfoWFfhYk5Zb*$i001npMPi=Cokv9}?Q20>2U(?AOfYkdfVu=}HXi=b+D z=wh%<$5*(*v5>!@_o=sfoCirD47!J@J0|KiYoH6O!Q^k8y!wZ-p$Av_w>ylnwMqb1j5uGYoG;|?ln{y;HfS`>S9G_11XNm9mRTePcZ4!4tgKp z0oVd7kS5Ap>Vy?gjZI++x}RIvM4hK^r!&fxbayz(IV&*<<@lsv!=cJZFa5EK&h{_b zi5eAb?aZZV|G9Upt+4P-Su&DIf{Z+CV%7!Wt(Av|1ED}o9-L$uaDmC+ot2g9>wXH zKrX&r1UxAE00LsoGi6m1MXv+1synicN+ATM;s<*&B}`;l5&Q^#lXp+suxw0(?o?)$ zfs&Btz*R+6T^Kqz1#8DSl0A}Dvg>uhv@klw4szs(pdB0eq(7d?=R8=VnMM32UB^_w zK*s(T-Qda|H&?y>Pz96Xbc1#?_d*frEZ8&BU5|sP8EhquH;hI?y6fPR?er}9D)J}0|LNBJ`Xx(3p{K_>?LH7>GKT%(h1umToBcVsjPnLrA>J^|ms?LM5XaVTv_ zQRn+8osr+|7m{Ycr2cXR2BD=y@HDD!Fy-A2<#|lEU#jlt)aCB%)CgXA>jr!nT1`iq zc)}V102CXz&CXD8k)UH6sBp!K2!^7&35cm4-PH|p-Qy>*Uv-TKCy1ySbQ4^?b@yjx zia6qPW*^A7%bU|Zv*`pA!E0N<219J!swT(e{34TqRMh_fxnXMXME9w4w_9cqpH_%! zep%bm3_irs(*Z=?lglR)VP)S2WAaHVTW@&6?004NLeUUv#!$2Ix zUsFZVY6lC7IAo|!7DPoHrHVzcP}&NuI+$Gg1x*@~6c-peBHyx*SiSM@;>+H=u>hg1AHR!9McVpc!PLm)6zNb6Ngw)Qi#uq#|^q5@gvt| zm)|%S92R(H$VeyWi9^IW<^6Ko+b_}sz&)j#$|=`7H73wWzBo?7Y1_LN{Z_= zM-amj;z&S*j4Dbf!$O2sjT93}+K+nphaG={Tr#;zVB}ap1u7)R5B>+gyEXGulWtNV z3Ut2M_QxpDwF@+Aw*7r<+l>>z{|sDdEq|pB%zlzyYiZ#lAh-=&T(>lN54hX`hMsiE zkQ~WRQ^@Cm_cQvYEHH2j^sKqPHTQA)0Hmp_y{D4^000SaNLh0L01sgR01sgSs6VG^00007bV*G` z2jdJ24iht)RHOm`03ZNKL_t(|+U%WocvMyT$3N%ZnG_PbSWxVWf|MkHSWth;ir7V@ zBtcP8f~dRhx@%e6T31)sPSaI{B!Hl@c4aLfN=qg*1s7Bl0a588WoGU@zdvqR0TY}% zB~$W#o@WTp%sscf_nv#c=bZPvuR;)nacGVP4guN#t$?<5e}4oD zDaj3O-+9+(p@Z{)uYmQyCSWtL1^5A2i=n?m8Ia?e$~WU<0+y;FaU#@e*QBL7CGgDAfY3j{%MaIs>NyJ%Fs=*uxS~-6_cl?RYuY zH%A4xhp^=~U?K1suozfQRmN(X)qwUw#nW={8sdtDV0k*Cc@F3!1`!&GmB2M9b1uc* zb`t=@7eYW8V2%JDs_R9FdU8H?-KPflFYra3Ay?M@etpxpGcwll@v78VdN1hM8 z{{|{ufxkU)0`Pypd38NR^H-w%w~3Vi*c%(z3VZ;(56r>f8*BocI}Yxb+v_y`A3?C? zS-@LBx)?-=LudCIw0@D&ytI$60n$A1Qg^YC z&@jV%VA-IIETA`VDbOEhI6oRAaE&DZ>f>i%4)7}Q9;UGg+tRFf531HQy?dQs0fs&f zO$EP9;s`=xV*~vO@V;WG4-D=B?iRa5jdeg7@D5r}!BE@L3SK@J0vp6SO`XDWunaJ0 z3;IgnVxTL~JO)RLrvTWUAkK){yC^*w%laI{qxt+*sQs~t2mqgf;xphxsRTlt*@)JM zDGGfZ(0q&gp+zAyH1G-V9*S{jwK?RMv5-0puYjNin?q1s1@r?>ZiFKziU8P~uYq@f zsaXEGG;a%Y|B>4FKcG*-@tF{WL|~)`&85=##}oye2AqcG0nl$y;Cq?ujU`kcqM6i1 zER@O=lmli40ecv535xz=6abC{MgyZU)7DV6V=B2t(@-o1FO;X46JgK>)KzlZg#_Xp z4{(gwp;5U2xPZz7o`Aq(6jV$EHpr+z3Nge7UJbVD1zZXCH8>7@Lj4>L+zQ-^rW^v# zlT$PerMKW4pBh)F6+oWcY9WE>;Q_M64soF^@F3{F0Z&rkdkW23N^`|B$;z;D&?*zn zdD!YUKyIdc@_;-P&w!dpZqYcjQHE(l*|;RWECaAx%k32si2Wq!MEvmrHv_9tJW63j zOY(hUm1Ls82Za^c*y=_!-vQI5@sAi2xEff9vKM1>F+E0l={_2j@D~|CxQJE;Os2G4^#s`Iew_2HoKOE z69KRW$8$gKFDalK@EW#SjiGKNuPB||k@5@*LWFq41PMng;8|b<8MPxQtng7R{s9Ta zpwGa_Ob2}r2BV41^1Vp2*uyl8zO z&>kl$=;1&ooLB`N<8-};0#Bm34b-!AzxEN7@>4Nho=HInOI;WEUIH!`QzRrd@GzEj zCrVjN=^+-0Cl}6!=FPld-U9p)Cw6;du?Z*2UIp+aupG-;g~tS2foZ_xZm~Q1U|{vg zI%hW93q~iL*agP{J%KZDrn4H8pMb})nmtUbpKWGOO5A5>=yEXpYwE<5AS41cA^?(u zg+Kw-=4xK;Ce~sr3GegeoCPYTZ(a>WA zpmTvIh;8DQ8sI}`cWiA5ZylL@cI#CHehZZ6D3rboC!fKoK(iPhc_nZ?T75u8 z74VV>06`D|kW&1eVA}1N0Zpm+2E>dZOTg6GU_S(0AETpG);0Q*fj6+MT1=Ca5qL&6 zbRPyaY0xZ?hPKZ^GZZ)rXcwcSYTyk}H=^xt6UIM41b`p{K!_5rg371Xs%3`w1w^;u zUkqL^Shf97yny2b7fpgVQ#xa@^-K&^2^N&}Yy!r;8M;=2S7)G&-k?VT=MtM(B(=aD zXr2Teh`SIF0U(F~5TeL@wCc;|c{_RcIr(oqov2`ePD*{7jpwuDcC4Vz&Z95JJU9(NRVKQipRe8N)RniY4~>5?%uNWgY_d z6TplpH2#&qt)Py_P*a$CYGOD30BsL4P&^ODRx*u^1cH6(l%S5JYv;hi7r^Fiw4DcB z3Va=fJzs*YmQtC~vC;AhSe{zocBzCy0&qXtS}g(~wHV3HW}_LlNGwqwBj$j%vr)$T z!0(C7<6PGXh@;TzVM=l=CU;K`J80u#oJ@P^!2ZDVWLRcGpY!5zP%*(KXuOJ|6V8-P zRfKyz45fXbE+O~o*k40w4g`YF1J6ih6ynHRSe|<+>4^w{)Z;O1vm1HR(b$6%{sPs_ zk3wr7PGq`B*a)1D8N7_m&3{a)fJ{dg0UW>Aw;e#4Npb#5$3XeGT5S7i(1!yrM7YOh zz^mZBgS?{Hpa09fpmygCI4QujR7|0fc^q3^0yP#O0w4uR2WE2orP*SNI`S)^+u$=m zFC=oW@)uAXMS!=N)QhBBdC}V5^^ELJ^1TNZPXOQepU~=RoJ2$`Bi!SCXi7MClp_6r z*q-~0KA?=pfTMv&fOS$yg&4907z^Zq{YR$c1en?jkZgdd%<~xLH8IT)mkbmx1nn6B zl-ASmx#4HvI#APDRSXLsOHO;_6@lhq;4iy~m3ORih*o8sY;J(4H(*uq|4rR;Nti0S*RrB5)aysG&>Cfa$;jH0wYIQ^5KfZEVHE zHf$TF^@ZS;y>3tZ1b|)lH;6M7X5-{H-<@z?NX=b7qNw8EJa zJs>4+KKza<^8;RMq9VWvzA^$BA7L-|Gqf6nVXsU2Kt7HDcz`{f(KL{OZ(MROAIZ4^ zRG>FbFsDcY?koX)7FFq+SoxH6C8EK#Wl)s{Iye}37HFFwXSNv_jm1=~beP_`N!=Dt z6!x(R_zEX|={LZ4D76vv4s5og^bRyTK-FNYTFhO_YM1|&*85P8?r9%@b>1K98uHzF z8_jtr6ljfUIVns5s`rPipTO465w-HxMI}2O=#3Mi^oXR>-tatGfsSDcspMwp642JI zz=MSE?5BZ;A@?>G4T4oKr$CLbfpkjU zo*GnLN4_M^JtQaMR-oPnQ2`~n`Zr$qyG9-=7`&_kPXKH@C=Nz347dVk?k*WP9Btgh zkVOwOwFy1og+9>MZFP-*xa$z4tC9dzsxnKqY)WsZ z9(x%KUPaNB@Z$y?3Ti&ND-WSdA8EX!MQIM$=1Sn{IG)8bn0iG5wOI)(0IGo7FgO_0 zO%&&@QvYdg_c$D$ z^;h7&2=?*@hU!7-Ti;TWqN$d(+5~g~3W5IkHeE|q3Ob^fje~&kHK?w@>tXJt1Mm^v z&ihNt9Yt2Z2yj33kJiSTAX?qa>KRS`HvEv9!uC-I43oqWXIcoG?4{ac?ipUJ9GXB>u1SJI#uX- z9eC2AwtDZ?4{lh7;#2}P+gUnMY#I%QRe-HO#__dkOg;k6jCxy;LL&gHK%b7*qnMJL zJdM92X&M>1FVk6_=7b54GVzjnB-!bb0|&P`H}hs zfR2%~^YmPp+*I5_uE6pHvq>v#YZL_)sq^#>oDXmUPMXzld^|P*r(l>LQQTGD22Fv*W1tyt0A~|k zE`f^(RzJ$gqr{f6dsnC8F%wz<1cAXQ^$3q13$OG`_UnqyDu8e(?g2Zu{s^i!FgL;M zG8`R9jowSX57N^Q0Ny9O2!HE9^+2m7O)gquuPY&ER5NmmP9?YKIC@;C=x|okx&FE1 z0A}Olgb1fMcoQ{xIJwtL3nC=F0I-3JFg-IU&PkQ)vg0xWu#1^zf#2GRVfO<*Ng%tN zfbw*vW!L0?Y;DU6`fcE#Fm~`&U1-uZNtMVa8uTavEB!c>{;uxXT!C#*q1~~nN!h_S z4qzd0W|$)2IS8Ia&PW6yiQlC9b}-&%Qi=?L?#l_VF$aF8_kbFz(CR`GYdT;A=TA)T zdt6Wkruh;O&ZPYcP<`0BZXG2#O|Qn=faV|U8H#l<*iCPt`!6Ek9Go~OZtwuFp;UVW zA!!9bN!|uZx~I++>D~VQ^=L=qGQ9^F)>cscaWXO`0t2yZPtxAs;qw7*0EULu_$z*g zsWve4{H9sseK!0$9WbDJG);Sq1K+s0zyRE@;5h&&q31wpNrYq_0Z7??&fdf)-+6Hl zDCzP&a0!VKIjKFS(J3kKYW@-kr1b*ANyYaqnzISAF3BBSBcrEZHBj%Hwr9K7c!%(k zqMd=Y--C3$Mp_d=1V91{fH+>O2OOuPM-#+8XES(ta^2Cwa!|T8PDD4a%hDTx)7h}- zd!{z=rG5?1^fztK=mldysS@DMFiPKs$2^_fB56?s5daB*PPl9RVltrb#L1c%Zw6ro zlIxDP%K+?2xKGu*9XK7WzvUxw*b??Z`B=!Px*sQ|gjdNY+>sEY09SpM_;)hzZa`1OeXyT9(Rw;B zN_gL}YfMw6d^~952Xt7DyU$ad-dc<(hyaM+i>$s8fCLJ3VypnB#rY(?o3M**s>qZ0BS=9fcdRsl|&b{C>g<%97J9~MZ>7NUcHGhna7i9YFuuIy-i zBi*kR8wv@FC#9~Y;{#69ul6AT@_p3r4q!W9Yqh6b&~=~EC_9r)?+N+7_fR}S{QMJ+ zi1R4KuQ{YIU}S)P#AV56z<7hwZc?km7tTU`R7`+wqh7+)7vV(o43&G)>V+^y4+KF3 zKuBEnIe7iMqQsqtlOO(=dbVr@+>62sx}NJ+UO=Jn;3N*(45$>5HD|`wh47luPuX0bp*=QaBD5-%cySShkr_q7GlH4_dxEo>%sUv?xyaF z$Y}Q{-A1ov$+KcdA)!c4AAo`i2(;`-uzC^jVhD|YwCDx;T`>N}pB6>Fw~`OR$;los zS|!wdtsWg;&jLdYgpCAGt^2Xl>N_PVm z0P#v;dKW*K4>KfE5%4E~cxL5k$z``B#(f=90hXDEyE)b}nq}P2q+U{!g~q{DR$ZuI zH>raM;IBGT@&pJX03vPtZPfzJyFk2S+5Z{S97Lfn!rkZ%Ky93^p*d;!iE(e8$*8}( zcqTP4inS}H7DopO1Qe3w90$Q#A28L8Yycj`7Een-1VH#Gz|fDgZ>PBc;IC^`Yk+EC zCs2vwjk_Hu#`ij4E$|hNC;S(6z45(2>+1Gd-`PA591xKRu-F_&0gzq)r8P2z<)HOh zKwlT7{(&;ecz1x*Vxf`6Y6hTgsC%!3%7vhhrMm9;yQ255a4Nk$tccoQQ}6bWNoz&N0xsGo%;O^Wn2lg z3$fHtoJ3&Xi2;Q~AbF+$9EZCT>-ptJY|kSxZ2TS8;RnY2hAoXcrJqsHCw;eV62a??DR}7`#848&#wUJ-9(;? zKVfn{BfpH@5n7xAUT-sCh>KFcXUD-(YlXz&>$gGaakyI%a04|zi0y>9lRQp<%Vt4N z|GD-2l8s?Mg?-?)6nw5J=^SMX9SVbIg3`HY>PzjVff>MN9Ou6PVBsu9)HqB0l=HpX zZK^`sKoBRO$RB{i6U^d|5e&Q;v%R19G$?%&^*eRe$1IwEy*TE+9)jQ&ZB>EiVc^~n zOLW3kzXN88@dOb7q433DA*cTwU>m;<0yKh*st&+2iMl7(9iJ_FhK2Nc0&O=u;&DbQJ*<}Gji7~3_X^~dEsACl~>U$uz#HFISyxK zMg5cNntbvrN+^x;ocqvaK%fV3REQ@ zi{y#~Sdt4Ecj7J?N38e>)RkmKsG*wq+ukukc+`rQSnCK+6v&TI9bugZ>@H8fW5x%`s$+#!6*(;RQjp2W2ih& zaZjnKLgF*;QGnNR6BtM_io;G4+X->OlhkKFxf`5u-*+5*-VJE=XO!*^oCaJ4bgZY5 zKO5KyDgfG#vjorDYk8glr14Am-b&yHU_C(v)1v4Q=hp^l>cTi#ubi~q(h(>=0*o!gGA@rf}XfywR`HKRzke0Euf$a{#FuhR` z0GBTSi?eZZ5QM^Xs#i)ajV9hq2ufQMGfW$_ejKer6#yq-8SSCoAZLOQQ;d|mqIDNF z^oznY66bn{R)8}X9xr^9_NZ%SPX_p=p;sEV9i3&0mKU6iXrWMrX}-y;1yW0+TI0p( zET)u=gD=}G0Yc5Hr9clR?;5e4AOavt)ZfLie|uqnBX-3+z{oh-r+lyP_K~7g9~!0J zQ8vyrOehp%S+!C{g{0%yEdX!1C{c*5#BPEJfGAOac0jEX<9hQe!0;CW&Es?iRRr~3 zJruozhKKp1BLFO;pNp+$NZ4N?De;X1tzL9dq7%wEPz)!C0Ep!XfJ&4R01a?m98chV zJZdi+shu>uq_Q1d{~Dp_Spv`}WPzg8XHq?5A&nczoGl&DXdC)VLXTCF4xCIknFbI< z0K`rJXdVC8+_6`K;u0W^Yuofx(mU+k0#xH9GOCZ(bhQP{E&;B6NrE&xjufFJ@O3N+vY5a)r;!g5et4|I*=SuDp^ zzwQQlH|u?j0Axo#Myx`0{;x?Krma zg3@P%t`&HnmwHIe6jJ3C`xCG@#EqMgVVxj06BEg{L>Q`t) z0br{K@OwHkXmKiCmyY`gz_4=A_VK_hAUgqU@-*Iki}})D{4$k(>Yv%fVLNQG5vO zp8)nK$Mj6EYvlK3wt4&b@j?p15Q#cyP=A`?`uH5%E44C~n3-aO#%CD~FR|U5lW8X! zSZF)}0B|6v&#;U>(yb;U0iz>p=N)j7Z%$F2#%y?hZ$R8sW=@M8l%jv#Zp3gZbg zfg?iP`U|}B@)J@Fi}k>!5V!6LezBR*r~&|>B~AdAYZbdY)CZS; zW?)*k;Y0vyo*=gP1bCgY;h}6>3oK~hw}?#syK?v8HhBY;p{n-}upiBc}Tx2k4d9qzsBa8reoQ8kMQZH~jij{;O?544J65A+eN{DUnYsUln z6&hX+cpP5yel8DD7-qHt=pN#^ZUU;MO2(M1b=qZ}5h7*TzX03}sU9Up6XGcV0NMak z(dK7({HHNu4xBJ5S+2{D*$9A<4Fl%G&<_ou2s8K<@Bol#-c_4W>K>-JOsb>Og1`&= z*y2_!^9J%OLXcq!;OG#Kyapw0Q0!~G_*le=uW2~h*4`Y-rGvy`LR1)-o9gU2 zbh~C4cQ1j<65dg;p-6z?j{x*v1qBsQFy{a=(;mdg{tg%mbV$(a&nL~?=DOrN*MO}a zq~WN508gRx6Wn|sT=eli#Dt9t`>e;32!KM0VymscQKxq27`|>THWOlwo4AvGfIh6Y z9w$weQsA3~!MkVzv|J0%UX=I(z;+=3hAjbYgKdDay1(Ok%wzpIBLM>UBgHHdYO;$Fj zdWIouTY+A0?A>DH-Oqz|!fBxl1HIch8-^GCzqa0VT5EuM1J^1PXHej4iQ*?TJJCiJ z+6JWzl+FfP;4Iy1k8K?RbVFJFNF0y;P*{ma7x7YF_B`bYmw?GMiY`z00{Bn&nRZ{?lIBZxtBuMKR~+PTNZLtLE)?fZ(|qRG!o0QHTF5=V04m0~wR1c30HJci+ajN;tr?|FO< zD7BU9z^TCPK#W}V^#O7lV?fstV5`nJ5gt2*@IJVeik_1=;8?L;)E{xZ#>LicsFlP` zLTvGf36h=(G|RY|=W=6rgpwQpn}UjmF!T&;?g9#<{d$yJ86sDd!t&YmSWN9@Mg?#@ z@DA*;8lwgn53B|QKw8~)Bk`IAz{Ui&M%r$wXETQW zjNGCzU@ph^Y$6T;*q|y2ZBPLWWESunbv-)Z0Z_db9P--;r+-}=v*L{+K4t3ApD71A3dDqRRd`x6}>^>R{ zt259U@Ya3oy64Lee1=l%DGznj!LUK^3{e1N%fd`S1c0zN7H|_8{-^mU&b^#@r#Y^H z&5rq;i>G{!GC-qHm>77mxf8f8L;>J#>0(Y1C>{a+ypK_Zl~}4fPL{*uM;oU^(D(xs zqxCkH)w9&EVm#y)O~zTyd0bq`mYMoW`~PLUAgP;WExOo|M@qz zIu5Nb0A{3y0N5?wMtFS8*0uZky%t!N^a237V;d$BIjq_Mcd_sJ`gF9q0=PLu0jE)R zsA4peW-GHl{%e*=08TZTE$iXl_6~DB7>#h5yzpCfu&^K&os2kM(J)S-4&%z z_}>S02>h5T!cN;p|`kl5;g!>On#e-JGbb2X4j}VMyaICV`=s zl5QP<(#Hec_ISQD#}c%2FjVNyt2wjy4Z*sX0FWsFA-0GQKw?q}JVM})_mTD(6z3)1 z6uhS1IFet+{cp{mci};x0ym8K;g#HLwDBifB#yl#SojV6TkI{#1KlW2l~e z2DVm6d<;PZK$F1&rl9yU#koH?U*#p|mHg*HIP*R?-uJD2^;ZhlJAIAl)F%f|PWFUB;#*@aZfl# zNoLP~@Q6u^t1-(%bM zPe*B;vy8Zb{MP3Jy>&_z0X%oK&+^51?G*(=)to%~{cO=k4JEizp|()cW>j$&J}leo zHzX+!fci<(-f9vZl1k>`CQH3mXZ1rOG zNy20K|5(fDiFGWgCrXfv*l( ziW&iva840)!SXU+qAo~sdxBVeD)t9PS6|y;Ss%t7eOlr`(wY9~F;3z!kY&WcKvb7& z<0k^MsHxCbBmmhwY3M`5Z>mip?-3`^gAUCc(^6V~*NaFFwaJt?wS^q8fZj6R_6D|@M0mIPM*DW`QC2M|w3AK)mn zSC{m1BX?S)f_~-gzBmP^;iQ!+e{4g>)`FK#By$zIBnq5e1q3Oo2l&!D%|_p50*p9a z>n`)jpc1o|MjPs|&d!l}P)(GZWn{spPuEB6-j$@8=xi?lDOT^IFEdf35tSWiVcYP0 z%X+fkl$a^n7+Ju3%ob90E@%{8Jn?EZaEy%$T4_CZU@1($-8X{n%BmYrcpw~=6W{Dg z1#Ax!dFzToU7>&Wj=%0rr2!v`M%xFWfD=c@JUPCnexez`jkK`O%NUmD4&r6tP~1p( z0^w|bZq7x!h`#qHy?-L06d(y7hwHa;y}FR#&6tG5m!!!=zP~sb$3J~rzF9}4gSNbj zMgJA}NadMKrv9A8nWT$bVL3+y3aA-Bo%&qm>|H5kT;wJ|0-1RR|9&sRARpTy{1Eem zHJSa3r7rXH{iZW=%c5dbF$Zz(bJl`=W}iI--1I3%T?}=b9I`M;8`*$u+8}3T|A{Zc zX-0wgXj=jZs`OtX6WO%+PB`~qaFG^1W4NKS7EoN6C>N9}&Z&v?JGzSc_)Az97qmku zqa)!N?v^XZuM8lqm0MZD+3fx$L)_3iJmb7=o{w#d{~1750R=p66!aBCID^VVH;at%;fh>P4lpNr`tuZ%!>C8( z=DlA~jKXT%XALJzAaMAKPSgT9V=xS;%Y0s-UmA8HJsw#8^&r<_(I-s!6qhP%G|xjP z-bWydSoc2<{s$=2746Sh1JyjWe`CCgtwbeC_;lC|2zw5+4EcKWuYX$hbyf%w>TsMo z1rnu(9!n8=JCRL+Nh6W5)y9=RFtwWx6*5FWBzlIfOh>i7gVT8 zl1L)V4J1zzeH7Z4Hz)`Y2071{jmw;ck!e0hL*PvgE$H;~Cjyq;2%fDvVge+mM&x66 z!+l=;F7D=M90pB24S}LHK#{koSatyy`I4W&^fHqFeW6T6H#nUO+6f%+_YUB^`mbfy z@8i5TW4Y`Ii^{x3jY!(BX6VDm=rOL^!%7~wMkEc-WEPUe>&z}Hh}Xqkf2Mcc4G7Jx zkWb#C!p0=!1GO40@kI1L^MU~~b~r7@^4O=iNfO<1R6~@=M(cn-?%Kn+_g@6wzkQBN za4l=b1W=e)JAUAFWqeMx-&<~D>LZiw68O5Eky5-w zPsLN2PmsJL|ItdplX%RnumGe*M8PX*oHv2Q$OH@qk?%I737*U8oZHVZ%P!-Kq8;S%jILc=laCxxA0033T8x?{VdzO(8N|EC`<`i*W!q`@wgw}YAH|e9@j>rg&NHD z%)!qsDkYO?KaT-4XG82Hi2&T%QAIZ7Q6|X>&WG1g*kPxl0dxYmX%JH&j=SLqBmW#AMQj z)aw4vS)?bG9(OG}OXVKw_ly>Pr|jm9BMAZKfIVwL>ASwTf6XH!r%iY&BZ3sUR3Cx& z3!kMm9U(0a_kyh8jqi{L(&rsWZq&vzxhjKKAU{b7Kmj{vm**gR#UY^+$Q3NxPVU=k zxd3QVi`T7H=Mp&rG!FmsSt)O^xa}o2LTI~&G%ZMfmAp;i5OP?!6UgZs{1@y3b}~sZ z1=~Y78~Xp(39(|)$u@g-o~d^~IEZNTE3F_2?+x>TjbEblYk-3-9EKtDsdZZwN53z* z|AoZh>`b6G#sSvPrP?fa#wPBGI__uotYH448^`^V1pGzI^$n^bzL?g4@VUuzE=QvG z<_M%n!YP=04;M-;UJlAo&h(~k`9ob-40xj~1LuQT<^_`Z`C@6OGWQ{7t&KnoGIFK8WLrtHcgB`4{~P>5{jKKwIKC{;3iAIr zN(f5+NZpiGk0Vr);eXPFUs@!sMNWUzwnyC}>`VDCR+zf(`C}!NLFpDr&Y1qe)1-Wk zU!LVp9w@!Mh(UHnEBqsbaBM#LhO;j6KO=q*&vef$+M}Hsk`>Pcr7v#Vq6pP72X`vT zA47Hp>+MWjDmLi84KeNJViASap-Q`wqo^8Q!e+()^^XZ@ZrMS*jrO_brwf!rpUsO^ zajIpIa(5-Rg;IM+C>zgQ`UqVsbzGuNZd+LXr7vN5XgyD)Xjdret=I7*_gg^XCLZ5GvwqgA~a6|aHYo-c< z-uv+e$1dVnbEShp@cY0<-_ zDdpAW&cr6gMkSG9BQlzsOmTy9Ethnorc)g!NBdIdW z$3Nc1*ZTmkyzLEQswpX7l8E7i>OO+P_apSpK;O{`aA#Y-oMY=4J3NvDe-&(Qb#M4Ny;0pUda;hx1df8Mfy}uSiTAak`zk$Sd@$= z5%}~*U-t_Vj>~(-yn~mxt*XbMM@$ofUo<=5Ro+;=BuPdu1zY#$lPGeDmQWu^B}Dna zBrol>;QP_I1^n%F#{$sDU9lgv6rgsPi~s{CSSBP7^pOmuU)W20KXavZbtSsGlMqzG zUxP7A2L3m%iK9ILLT*hbCiX43EyA5wGKkn~=W zurz-}7yK&;prQ=xoCgRO%zF6KkKBir#Hs<&)KgnE?M9cxC+}%%xuAZMqy{h@7sAO^ z2uH|+29a?D^e-X(H?;F=hk^M@IY&QY9!Y5IlMzAyAv(+qkNU+S}RUSDsO#JqS~O6tWCjj4NtNL>>LjEzy;9AEw2Y>U{T>0GpZ@iq-T(P zdOKwHOv|AKe~-~MKkEKgIL(EE0!-FkYKUs+sEo;zB>mo&rm7D)|2TPQTj#gTWuArf zo)L?~kEb=cK_)PspSi&-DNYA$qH!RP@=MtJw4c$^N4E4Im;yv3`ejeht$RxN$5>+V z@I)(%ko(43&p8CynVg?v!ZGZF$XnG%<|U))K0BG~oAz3mgl?PUIbp^90Yc3}__}|E zh;NdU{!0wCxTfP_4kG~t107hZxPTmhn8FzvH7xT$DmQT)3xi#Xp~_mQ$xbUH)e^-C zyETN)78X$`oBL_3EG?N7K+Y>>%k0V@?jwPerWirzWl1!PZ?TuEfJczNi{b1dXGJQT zDR`!wJdo7nwE|i@+fl*jk0Ff7+Wsx!TO)CR^YGXAkH4_U*r>qU0P&jOUR z5JT}#AT#pXj6Z))%Bqm>wWh@%ul9`4?0%YqKVy3qWk}@VhI`Tc8r;H-NVZk7$fRxX z1nt5ky8nT7cnq7Zx^&(C*n2r1XUkuMXfQpa&$Rhr4F^&HpuNL4ASV40A%_2jOqC3> za0q!HUlyHm9n;PSIy9xpkgH=X!_# zRscB8K}i-lZT7jz1A@GD47F)QZDW7sDgov0Q)x+ju1Ujom3HNUu1348p!iSUunM}w z0n#WV7$*ofo}P|EY?DB)G7swQ;dGNY#780Huws-@M@DULNQUqdm;9~XaD_c>-*ZKwv zJhJ@+kplu<`WU5PoZ!hPKXD#UH%u%)@MPtexLYZj3R><tnoLx<$w-p3rI#!KQVJ9GKr~9Rf^85?w8K&7+Vf!4 z2q9!1j7e_L_dJA6rRK(H3z)f32c2CLdel|2Lie8sb6J`6yhKt%V3iwE}Btd%?__35+QMSJ++!RCjX24u70=&{@ zV-5+zH5q-Jr95<{Zc$NDycvB8EBLbJB;G^{GDwD~WN8*3+A5Au;>**kt4(dRQL0WZ z{_xMtHLbK=uQaTBjO*zn5QC|_DQ|jrERhjSulCYVUjbA_eh*!jEmfV~ntyqnyDm@Y zx&@ugAZy&Y=xGS)>~g3FA$me0nuFMCWG{L1_U}LYQMmH);E}xzT(WUX&CVM*mHQQ5 znJaFOLAKp(TPc)AVqq?L%6rN-#Gdp4)q>R$o&sIe-;OOt#m)IoREnW|avqz*JjSXP zk@=CzB&x{pqbHm_LpSc!A!(@xQ+?6WU;@?N!grU|pb1NC`Fa`MALs~&Qk&v9Dg)U` zQ>6A|k)Nh zeli2ChSsOAkNQxNfO65(w0M^(FGNiBr-AtvKCh6!tR_w9n-2OD?(}HF&A_NZbNmUD za&A&ku>qVky;tMq(o|-1q}NqEo=nkFygf+-+6qSnYu(7X=*cs>rKEQdEn2a-d(zXt zE|Nh`RY5rReuuCRLm7U!{g#^Y(z1f{}Q0(dxnhBs%=?7j-CJu051?$V{6QH{>-Xz|d#Bz6`N&Q_h zT2c3a^|h1 ziPH1%Ds;3Iz5Era3jchxAF3!5$kc z6N$22voTB>PPj>C+D(O_Pyk46i!+U}Zg$DEgo0-q;O%e|#8k{-`5PnzG*xyo^{%Z! z5+tH#J{$#+Y993GDq%krD>f8cd$rJG-2KD5Vjg-eO0cQ^c?QC9zFXRlM@{iY4ORO- zJ#3AnGQv6>0z0ZMM5S}B#r}3T%3}B;0J)a=3)Z^^Wk3YxhfOylE<8ddZU?vy91x8|hLN64kw*IV%_eA{emgcq(y!YY>`XY=jdC-Yd5q~lbu|)^iq$=L_`zd zBQ&i-ttCs(b>I!HrbCQ;G3UDS>YbF*gBQFa&TN9-;JoF9ZNYnyGPET4uzqv^HwS16 z{zq0Zb6z`3mH#NC5k>Hrcd?bK2q#5)L99yD4z&A*o+3P1^JAwZ?>0#!MXe9G^2z65 z#p5OKCVQm*_j>7fQi0FVi+%03-z~3B}o=H+T!99m%VCRp0A~}cw2i?x{Is+Q*WN~>MmzDWLTcUQBeX*z# zBa-|9tQGCRcy4;ngUj;>b@(vYmK7Z0i2H-a97wFETHi7P9DMq&&EBb#m-Y{f;k(EC|cxYMNcm-UF;gu8{yivn&W`O z@uR3v8^6xD&CUPiq19bh_{#X}!K^qhL@O{e0MMMUZo$?x2lGT3N5RmVM(*?=?$IJ= z@rY8ut+)4PZ`()V%P?3C-+DEA!!X6K4{A$~VA}~c1X#27POT!zCz}TVmL8LGLcHN{ zygaYw>UWUKOUbDrMZ0$NaDBQ_`9;ozkp8#4`ut&1SuSU``Jb&0~(JVN{rNYKsiuYg3 z1jDtjz6eG-%B0h|b3`{pDWCw4&^?!+Jb&mdN9EnshiM!-MVC+XcS+{TghPZ*_JCv% zeTJpwG;8$%KcXZ+R&=RGGh+#j@26p+jW>AvAv`S>GO+irl8#-BzMq64uIjE##MzEn zEd+YBG_thwXHD2`=G(W2&)`u)PTb0i!EAKqrSWK}zwdinu57%_1m*^Dp5MWZOpP%fG%_LG>`6cgn*&6Eo$S>>%LA^Jo zh4!ob&2--1MrF?M!V-@Q?#oiXUSV;fbT@(nqHJ|JntpEOVtc=dp}D13TGF^1J$pK{ zou-at?G4zV=fit-ls>Ce5`;x>r}Z_upyItkx}5B8ViDF40*CnJV9L;)(=9cI@*GgL zN=Ho_g>Rkq=>b|ed+%n@;%1DzB(#y~&y@#ap$^?NkjRxZZ2_FE^GBU%%s&V$Uc%>Z zk3EvWE=Wjmf_XW6e1d(>h@df^ZF}HcM!(@IplgJ@e;Rrj8YmXGg4XAd&loK`Tb6b% zoaaaIbvyuJ8lJ3XbsJ-FFLTn6ry4kUnGdglQ{iqhee~#;C6eCRWW#On%Km*J>{L%$ zThOfub)PdwNLN!zhLt(Txa6duc3=s-6_%Kg;(TAeQOZy{qf~I=XMDq&S;G>|?0I0; z`vuINIFErZLFhNt9%ho@jx2OA~5_@yz$9I6Bp()|s=vk^*M$bC={O*QTs7 zRewzLn<8NNp4jmTR575E|M7^6XjLb7q94u}ck&%ZtZpCZ`u9d8fHeMZ!lb6KdFsLL zJGjfyQw5JGj`nMSri|6ELKF$~^2lHUygBs#qg}N+Y(W(b@V=MU0{?jm`!EgoO;Ex{ zo|_a~!96XboU~@9lJiR(3e2efQiZ9;>e%7b(s6h^J{!>MZS)n{?ouGyf=1E$t=QaB8@zld8oEsaebh9fOkPg9xyT=hKG@@8ds~ z4`L|O_>*l?XP!COC3Uzpdj}FSLhJXwHAI%D!VVJFUaM5@hVcnvU3RR_kFy<9zsz@Z zc3-(@hs=Y&mEb>OpLj?{w{B7mg-?Ruf8h@*VS!+J%o7Hz0*_j9(_9akw{-faTGvE2 zUI3bbuLJ$mlJ0c7cam^EW4!I6_c}DEbeG$VSQL8-be9xo;o=BBSM6~H#DsAtnwVKR z%z9|;*Tij5!b*59btAVQl7h>AW{LBB@;Hb6-4ib-@7+YgbJpw?z-{TOQMz4oWAmFo zD;euwUTm^q0tf8sb9EbSnqUqc!Ci&|#tcydBF4uIi_mtg%ZC0aCenIb^=)^n=F&kf zWNj;tQ_-`R=$=w)5COU~zRYID{v>DzjsXdrcZ}}b-&vOffSkeY43(v9o3xqt`*&24 z#5;CyU5@lM*CXr7(g#OgKy1XGV6=-kA1}3{1v+}JIT{Ak9sd>JtH?w4?)F@Te;9 zQyDxL#@tLoS~Pxws*bk@3I#C60b@AG*F&%U@kOY&FlDM~MQ|6XG;j9Zl>{0-Yx5xW zKJ+P{7#p!?MY&cUt)^kU)u=Ku#2_x#U+3_sxn9F^ML8v0&{O67^yX5&jPZ~;DD%y5 zGRmmZthQm7A+oDfsRkrY!A)RlmnmgQ5WTYQHf-Y_!t+HYj~}XmEJ`6VSd7*Pra@|r zf-$C=zU9>K$qs`%z`Y=Q$R%_Pa4kel^_99@{rJE#?n+PrcTnkK${n`}$)sYW_gns0 zh)rGIYFatzB#?O(#^BJgspeme@_HOeI}r64#2)lD2vf_*22a*sOyBegV}bFc=;OlT zMKV!d5qI=P(2_`)iCt&aI)$|K_k}*S)m}E9q6fUnUNep7$|yNrykBUafkN3e9@*EB z5+Q++uT`il!JbyRW-vmSblW(ag^TmW_CZ-R zw6aj6-0+=Si9=WL;8)JK*ulb9D7r zmR(!h-XuF+^SCKv!u@-o%UxXU09!M&4u5QI5kUd`jNE!F&on${64f~rp% z1!@}6cmUIbV?#D*UrFr|ExIfbK7b=gKB8o-EU5Lj;+9&bDzxAgn|>pvqI_MwU6S?l z)#ezGMQ~!uJUD*6C9VtpzIfr>`U}5NM|AM-xk!nKCKQQgw?iW7!rGfb@+%Tw((gVr zBQ)_PqB{bq*E=}pqdPZ~yaC@ott+LX!zBja3&TF-D#poFpOeF#YVfeSgX`xyx7@7S zqs`Cs=)#0NnmPRPDQo%VYdXUQko+InrR@E;HI%{vqIyn!T_Pwn+j}N-8rsSjH(pWA z7yQr{N4SuF?uypERZFzcrGeW>!3az)uhqlV{ByJJF>9j}1RzIW8Fpb7(u3^geA`C! z(`)1t1SnP>64XKweGW2Pt2_0LYjne5ho{OvuhK$}q4TnTL=^)2b?BTlVXnfAaJu0mZ{Veu7RXA1>$i0BIP;u3)FIpBRW1l-~_qpf4+?!I8 z`~EtJykaPQ{qmSZ+Ow2n)#XJq9@ddJ8|rdtR$U#r&nh@3|IMnHlkg!q8t8NZgn zAK;K-8U@n1`PBEbwcv)Q_E1SZSz8XRB-N&XHqIhh;j8?{*Bph&upYXvXW4|(=3U>F z*dYVka~cu~U5qJpl|30)!TVQyp}<`W9GXU$c9)t(Td z&${XFs2O1Ri0g@%p@x-jRl4U;TE?Ke?k8hOCaYyt)j%5K3LMN-60J8L8a-`4$py}8 zwMgV`^yF&zU@nL9E8dAsG&HoMH=m}{vTDNb>TC#4~qf>t+W;OOIZ+h#GzKl7KhZ6a& zZ3#Ia*RM`h`}~Y4Sp{eggi6aCkvQOFi$6%iJ^aO88HtNEe&q(6O$48(&l?P41{%As zCidRS%DaA%=~N1$v&lb{33Sc^cheCY>6- z1L^8>ugG0KeKosa@Sy&~^|zHk4vYP4otuSNe+5bLHsHyL_ROk$#!1*|zYbbXCkgDC zWE~^>%XE^UC3NjGd#uu#ec%#WN!MzzT;=n=Ge(xV0-0%*G@B#y ziQ^aMPMC(9pNW0`Mm4$8frsnKwQJ41fL9GfYFqRoxxi)Y}*^QA=m8RHH>HFS-NVN#;)H3+%MG?a@rbg@C zG?=ez!#S~F8@z})jB0~iekKuC%${1?H`FKb-oftbem z%6qPpk4g5iOn7BSnh%YgGX4s@j>?GF`5USDQW~IR^;MtEQAxxlx6pthFXYp6Mg*OI}V*(r1G(%y2H7&hY$ zaiwROr>##U+iG@x9d2^axDQvDmF8M1Pq?U8#E1DdTeGq1|tPgkCoD7AJNFqQs4 zyRWbQJZ`|Fe|r!NAHXRMg5H#j-NX%Gu(all**TH?5RIzG)YfH{GR+sPlQyj_JvPvu zvAer{hAL;g8r!ypF@U^SyXBzSBRdQ;il z-=Q-8?f>MZY8B$57@@-sq0@b}?KtYT}I)j&F2aXBE5!Ul-03xJ&SudHA?u z>$mP+3&PSw;$rd24yvIzX3i(H^_d0PHy3yHLjO`Abkcmzeyqq#8aW3&>HR5tY`U}Q z;@WIH3FWg933VcJsOp~HW}`@P=oFrJ*SmY`R}3ED7`&%_DI%8T{qcotNgt*7O2kA} zyWQ&1ZGyUA*Fi>n4#@RoZuJa)gPS^`IYq&0c!_zGm8iv{x@(`1#X9fbT8#2W>NFJF zJNwF2e4rR&1_Q#uu4>r*#^@E}rtZSEDjSDsnovP^A`ru7y5)0O3$GVIG-)+((HT3UoFX-$pX?a&@@xMO?^TMRs7 z0@op}p)^D)c|_H6nDzsf$kvt;H9mRyT00k>kPG9{K0MKU*umy-x5+=3v^14{$3}f_ z+UxFVfe(3){Pqj$m6b^2d?Q*GEREE?TioI^q&(us=^c} z*IJ5hp@|eo14`9+MDnXI+JyO4y%o_s$^I$BJ<%L;j>m7c(;cYZ?aM&Q zdDUdDl%>lVj^yqhsNml*bArZH_2w5x2g%m%{dK}%0ku-chVcdv9y2iF=|zAn%vs>> zUFfDN>oZ9fV~J8Hw&jEg?Ti`nR1S<|q9pEtJBUsSct@*rry2 zdcDCsWCd28URWFm|(ON{9b_B`NnQ4(<^{I}qwTZnu6}<9TA_-rkLvrtq z*n$R7j@<`mLHuusAhh02?yUA3Y5G`!YV%IYZcCommpWal4?DNChth2y-h@4!}M zh8?AKsfuyHV*0zC*pFG{+U7!MWyUq&1s?xt=}CVr(UIZht3C6yjUefE-_gXhDIp%S zchdS6`3{!TvSY}tq2{H*I2NTNA(5a0`C1IE?9W#@UgGrMmI+dY54h6!g5pl(x;-kn zh~oMLPFVk9g#PTMM(B^G$Z|hpg@T}hzdUp3kyqrVqgEIxk z>f<=rm+Oy~sv+bZ)(v@d0;s>{QF2Mys~LV#e11CpC7BlQ1nHcQ zk>w+nHK~0Imd~-juC^3dDP<+T%$aW6`UIsTA_3a_7>GyJj448L&OK-(>|<~EX^J7x zV%wOLstxJWAAhaD{$ZT=tL}tQajo~8G$Q2MnQR@ms(n0FXzL=C(KhT$nUD(`Bza1h zguN(sug^5e!efLc^6Cv+o!}^1$rT?em>VDKNVcpYs%FVRzH@H{^EYeT|jPcL7+|3+-Z4tPi@8V^JxnT zii=ipKurOv6w0F#Pb2njkcBDq_qK5^Vj*ybqi1H{TbZm8{*jK5N}^VHo^R0qYNx}g z>d38p?zLf(r0D}6l6(yqS8VMsMzD3D$Od`jthpX-M|4SY$2iF`bB5a=)4xKtfeI>` zs(DbKBqJyjABKZ^r`=)`MjZLpDB=e&Jz~8j*4$PQ@ik>?b8A)Bf2+%}gKy;MqdEl! zP{c|(N5f;QUc@YTs9SqKZs4jmKmd5D`&+k3vJo8_P8x|$ zR5X8H&v~~31THKoyk|f04pDZ2Vy)uG(zXeWjY%?xX7KM=h)6$IG|6QI1NH?i4?IH- zV^b6Sn3KuyR$;$MiPRn#e^E!z1=^)G^YgTRG7#*nGe`y}hV7nw*t>G8nNdkwmmnl3>L-qa4UFFxjJql4;yUrC)4^HsS4ahV_Fu!Wl4HGsa)gl zpq9#YnXEXK``q6L^64kJ^7-1@hS86#fK});y71LP!B&vM2ZTF_jwiDEC_w#wdyr~& zjiqZyt3>oCv^mKrB;kE^b3E8hZ=ODKot7!!C!eZOO-S@~Dq8q4O88G@)P&mQxBT1X zyV!pGF&?KHpSH2BC`NQd2=~7~F??>A&*#C4a*4NZ?7QCcQy`yP*=pkWnsii{`_5 zX%Q%Ek91njpg^TTA@=1CnVW@uRA>Lt*ooDcH6erCP~=hTjZG!H)pzOCd*|{B1hu#x zSBB-j<0T~pbHD4bsX~da_+gTB!%yI_^$km#uu_r?=PiX|{rV6a{=AZ9s&&t&^=3($ zpZWe`yI)#i?cu|TH_Tbn7TT#UbpE*4-g{ALnC{`M=QA$=P2S4R-=sN5;`Pecx+e7h z5}E;z5iABq6tcWD4jUO`)#8pQkF-N{lk70dO32L-eC_79du)t*`$hw|JZ6Q-jxcR9 zf0a7heb>yPHw)qD6F>vGmDa&5gqw1`xNL4`Sk=N~i{c)ufpg&P+#G{JCPysmp?K<1 zg?F8&QMvfB_aFIfc35(J(Du5ypF|G56b~<mR%9c`2teA_YN-r)1D)WQe6;jzl?04%)qYffO5Gkp|PQ!sGy$k75%9}!c`U6 zS$S54E`Cv>H^*hV9ufIYv$tB(;i$^(DQh$479Kyj7aOn0m2CyP4S?Otwse+sGnq2elw|rpS(d?_JgH$ z20251h7Xa5QNw(W$ePU|Yy9@RwWIh3DFO_J39lhoDNH+pRTjlD9Ca)01#vPz&giuJ zOhO9cvLGB;;IQg0e0rx_geRFd_04(y6=2h67qwA-@e}?n)mZLrHb!DhB9vcW1FHq? zJRa0Z^J-k1E`X@X)`-*oLRJjL{P~zA17FllHrS>Bjaj0w7U>?!I;x8x5`KPnSmxgw z0dxv`3Uh-umpm`bf=-1*?x;k{1MhfM^T62bI!NuYE$9LZ(8arJ^Yy{9lhhWA_^^O) zGJ|NlMt)cgxWQ3&{^8XNQ-!P@0WSLijm`QfQ%hDEtaMaGCug)5KR-}hCz1Iv&i=J} zn`sy0EPWO4xxN~%6S1G29X%TLTCz77J^SDy4 z7oK3HW8^E50140I?4d6@#3T;8h4VQz=6Y{u6_v?Dw5EYKR2G<1-nEDHWd7jIZEI0! zfr=Kr9GUF>_ym627Efz zh_%7>^R*{6Ij9MJ)-42PqEIFO1IPe+VcmB(mwuIH*Ad)*W~uT?=4aO7vaS$*@B|Jh z`O}aX5o)PzJaGmv1_Dx7UETSy9n?OCTCyiKxK{qt|j|NIAcDG561O z$NX2T^8Fi{R1Ky?BYgTagaT_ey-CJ{c6lpo=NYS&u$-$J2d|Mt838& zp1QWkqUSwoY-|gc$8}s;m{Sf3X|+3XBG8gV$$Z|p_FueWuc4LvSN)<3kf1XCyvB6w zpZckZSF6PTK{}Bz+or$k{lC(f2zlVx0SI^O6`*bU&+Y=m6*nV5&`WCK{`#My2{7W< zY2p({KkXQE0j}&1yvn6*$=cyx-u>(bj0Sc#ltEh%Q~9Fkde)A|i~pp>JmErc_n(=~ Sp|^nNkBXv(LbaTE@c#jenT=Th literal 0 HcmV?d00001 diff --git a/backoffice/index.cgi b/backoffice/index.cgi new file mode 100755 index 0000000..ecd3994 --- /dev/null +++ b/backoffice/index.cgi @@ -0,0 +1,193 @@ +#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl + +use strict; +use lib ('api/lib/perl5'); +use lib ('api/lib'); +use File::Basename qw/dirname basename/; +use Template; +# use Template::Constants qw( :debug ); +use CGI; +#use CGI::Carp qw(fatalsToBrowser); +use CGI::Cookie; +use Data::Dumper; +use JSON::PP; + +use dksconfig qw/$sitecfg/; +use session; + +my $skl = "skeleton/index.tt"; +my $cgi = new CGI(); +my $p=(); +my $cookie; +my $vars = $sitecfg; + +$vars->{filepath} = substr($cgi->url({-absolute=>1}),length($vars->{basepath})+1); +$vars->{baseurl} = $cgi->url({-base=>1}).$vars->{basepath}; + +if ($vars->{basepath} eq "/"){ + $vars->{siteurl} = $cgi->url({-base=>1}); +}else { + $vars->{siteurl} = $cgi->url({-base=>1}).dirname($vars->{basepath}); + $vars->{docroot} = $vars->{docroot}.dirname($vars->{basepath}); + #$vars->{sitepath} = dirname($vars->{basepath}); +} + + +if ($vars->{filepath} ne ""){ + $vars->{suffix} = substr($vars->{filepath},rindex($vars->{filepath},'.')); + $vars->{page} = $vars->{filepath}; + $vars->{page} =~ s/html$/tt/; +} +$vars->{abspath} = ""; + +my $sess = (); +my $se = session->new(); +$p->{sid} = $cgi->cookie($vars->{cookiename}); +if ($cgi->request_method() eq "GET"){ + my @params = $cgi->param(); + foreach my $pp (@params){ + $p->{$pp} = $cgi->param($pp); + } + +} + +if ($cgi->request_method() eq "POST"){ + + my @params = $cgi->param(); + foreach my $pp (@params){ + $p->{$pp} = $cgi->param($pp); + } + $vars->{hasposts} = $p; + if (exists($p->{'btnlogin'})){ + my $ret = $se->checklogin($p->{login},$p->{password}); + + if ($ret->{sid} ne ""){ + $p->{sid} = $ret->{sid}; + + $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>$p->{sid},-httponly => 1); + + }else { + $vars->{message} = $ret->{message}; + $vars->{messagetype} = $ret->{messagetype}; + $vars->{page} = "message.tt"; + } + } + if (exists($p->{'btnregister'})){ + + my $ret = $se->registeruser($p); + + $vars->{message} = $ret->{message}; + $vars->{messagetype} = $ret->{messagetype}; + $vars->{page} = $ret->{page}; + } + if (exists($p->{'btnforgotpassword'})){ + my $ret = $se->passwordforgotten($p->{email}); + $vars->{message} = $ret->{message}; + $vars->{messagetype} = $ret->{messagetype}; + $vars->{page} = "message.tt"; + } + if (exists($p->{'btnvalidateemail'})){ + my $ret = $se->validateaccount($p); + $vars->{message} = $ret->{message}; + $vars->{messagetype} = $ret->{messagetype}; + $vars->{page} = "message.tt"; + } + if (exists($p->{'btnresendcode'})){ + my $ret = $se->resendcode($p->{email}); + $vars->{message} = $ret->{message}; + $vars->{messagetype} = $ret->{messagetype}; + $vars->{page} = "message.tt"; + } + + if (exists($p->{logout})){ + $se->deletesession($p->{sid}); + $p->{sid} = ""; + $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1); + } + # if (exists($p->{btndeleteprofile})){ + # my $ret = $se->deleteprofile($p->{deleteprofile}); + # $vars->{message} = $ret->{message}; + # $vars->{messagetype} = $ret->{messagetype}; + # $vars->{page} = "message.tt"; + # if (exists($ret->{sid})){ + # $p->{sid} = ""; + # } + # $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1); + # } +} +# open FILE,">>tmp/sql.log"; +# print FILE "parameter session = ".$p->{sid}."\n"; +# close(FILE); +if ($p->{sid} ne ""){ + $sess = $se->getsession($p->{sid}); +} +# open FILE,">>tmp/sql.log"; +# print FILE "Seesion GOT!\n"; +# print FILE Dumper($sess); +# close(FILE); + + +#$vars->{beforex} = $vars->{page}; +if (!exists($sess->{id}) || (!exists($p->{sid})) || $p->{sid} eq ""){ + $skl = "skeleton/login.tt"; +} +# if ($vars->{page} eq "deleteprofile.tt") { +# $skl = "skeleton/login.tt"; +# } +# my ($appname) = $ENV{REQUEST_URI} =~ /.*\/module\/(\w+)\/.*/; +if ($p->{sid} ne ""){ + $vars->{session} = $sess; +} +#SESSION - End +# #BEGIN - Browser Blocking +# if (($ENV{HTTP_USER_AGENT} !~ /Chrome/) || ($ENV{HTTP_USER_AGENT} =~ /Edge/) || ($ENV{HTTP_USER_AGENT} =~ /Firefox/)){ +# $skl = "skeleton/browser.tt"; +# } +# #END - Browser Blocking +my $ctype = 'text/html'; +if ($vars->{suffix} eq ".js"){ + $ctype= "text/javascript"; +} elsif ($vars->{suffix} eq ".css"){ + $ctype = "text/css"; +} +print $cgi->header(-type=>$ctype, -charset=>"utf-8",-cookie => $cookie); +# print dirname($ENV{"SCRIPT_FILENAME"}); + +my $template = Template->new({INCLUDE_PATH => [dirname($ENV{"SCRIPT_FILENAME"}).'/tmpl']}); +#} + +my @lv = split(/\//,$vars->{filepath}); +my $absnum = scalar(@lv)-1; + +for (my $i=0;$i<$absnum;$i++){ + $vars->{abspath} .= "../"; +} + +# $vars->{page} = $vars->{page}; +if ($vars->{page} =~ /^module/){ + $vars->{module} = basename(dirname($vars->{page})); +} +$vars->{pagename} = basename($vars->{page}); +$vars->{pagename} =~ s/\.tt$//; +# my ($appname) = $ENV{REQUEST_URI} =~ /.*\/apps\/(\w+)\/.*/; +#$vars->{requri} = $ENV{REQUEST_URI}; + +#BEGIN - iFrame - Modules + +if ($skl ne "skeleton/login.tt" && $vars->{page} =~ /^module/){ + $skl = "skeleton/module.tt"; + if ($vars->{page} !~ /\.tt$/) { + $skl = "skeleton/module_file.tt"; + } + $vars->{params}= $p; +} + +#END - iFrame - Modules + +$template->process($skl,$vars) || die "Template process failed: ", $template->error(), "\n"; + +# if ($vars->{page} =~ /\.tt/){ +# print '

'.Dumper($p)."
";
+# } 
+
+
diff --git a/backoffice/js/admin.js b/backoffice/js/admin.js
new file mode 100644
index 0000000..3cc2511
--- /dev/null
+++ b/backoffice/js/admin.js
@@ -0,0 +1,106 @@
+var choice = {"company":{"schemata":null}};
+
+var admin = {
+    loadpage: function(modulepage, modulename) {
+        //console.log(modulename);
+        //console.log("Load module:" + modulepage);
+        if (modulename) {
+            document.getElementById("modulename").innerHTML = modulename;
+        }
+        document.getElementById("moduleframe").setAttribute('src', modulepage);
+    },
+    sidebarclick: function(modulepage, modulename) {
+        admin.loadpage(modulepage, modulename);
+    },
+    getcurrentSchemata: function(){
+      //console.log("selected schemata: " + document.getElementById("schemata").value);
+      return document.getElementById("schemata").value;
+    },
+    getAllSchemata: function(){
+      var x = choice["company"]["schemata"];
+      
+      console.log(x.getValue(true));//.getValue(true));
+      return x.getValue(true);
+    },
+    logout: function() {
+        req.reqdata("POST", location.href, { "logout": "1" }, admin.reloadpage);
+
+    },
+    reloadpage(page) {
+        location.href = location.href;
+
+    }
+}
+
+function reload_page() {
+    location.href = location.href;
+}
+
+// function closeSidebar(){
+//   document.getElementById("sidebar").style.display = "none";
+//   document.getElementById("main").style.margin = "0 0 0 0";
+//   document.getElementById("modulename").style.setProperty("margin-left","0px");
+// }
+
+// function openSidebar(){
+//   document.getElementById("sidebar").style.display = "block";
+//   document.getElementById("main").style.setProperty("margin-left","210px");
+//   document.getElementById("modulename").style.setProperty("margin-left","150px");
+// }
+
+var mySidebar = document.getElementById("mySidebar");
+
+// Get the DIV with overlay effect
+var overlayBg = document.getElementById("myOverlay");
+
+// Toggle between showing and hiding the sidebar, and add overlay effect
+function w3_open() {
+    if (mySidebar.style.display === 'block') {
+        mySidebar.style.display = 'none';
+        overlayBg.style.display = "none";
+    } else {
+        mySidebar.style.display = 'block';
+        overlayBg.style.display = "block";
+    }
+}
+
+// Close the sidebar with the close button
+function w3_close() {
+    mySidebar.style.display = "none";
+    overlayBg.style.display = "none";
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+  
+  choice["company"]["schemata"] = new Choices('#schemata',{
+    searchEnabled: false,
+    itemSelectText: 'x',
+    removeItemButton: false,
+    choices : []
+  });
+  getschemata();
+});
+
+function getschemata(){
+  req.reqdata("POST","db.cgi",{"get":"companylist"},fillschematalist);
+}
+
+function fillschematalist(data){
+  console.log(data);
+  fillselectlist(choice["company"]["schemata"],data.sqldata,'schemata','company');
+  
+  return false;
+}
+
+function fillselectlist(obj,data,vidcol,vvalcol){
+  var sellist = [];
+  obj.clearStore();
+  if (data){
+    for (var i in data){
+      sellist.push({value:data[i][vidcol],label:data[i][vvalcol]});
+    }
+  }
+  obj.setChoices(sellist, 'value', 'label', true);
+  obj.setChoiceByValue(sellist[0].value);
+  return false;
+}
\ No newline at end of file
diff --git a/backoffice/js/formsave.js b/backoffice/js/formsave.js
new file mode 100644
index 0000000..8611d49
--- /dev/null
+++ b/backoffice/js/formsave.js
@@ -0,0 +1,286 @@
+function saveform(frmid,aftercallback){
+  var flds=getformcontent(frmid,null);
+  flds["fn"] ="saveform";
+  flds["schemata"]=parent.admin.getcurrentSchemata();
+  console.log(flds);
+  if (aftercallback){
+    req.reqdata("POST","index.cgi",flds,aftercallback);
+    formsaved({});
+  }
+  else {
+    req.reqdata("POST","index.cgi",flds,formsaved);
+  }
+  return false;
+}
+
+function formsaved(data){
+  var sb = document.getElementById("snackbar");
+  sb.className="show w3-green";
+  sb.innerHTML = 'Les données ont été sauvegardées!';
+  setTimeout(function(){ sb.className = sb.className.replace("show w3-green", ""); }, 3000);
+  return false;
+}
+
+function showsnackbar(xclass,xmessage){
+  var sb = document.getElementById("snackbar");
+  sb.className="show " + xclass;
+  sb.innerHTML = xmessage;
+  setTimeout(function(){ sb.className = sb.className.replace(sb.className, ""); }, 3000);
+  return false;
+}
+
+function getformcontent(frmid,dataflds){
+  var frm = document.getElementById("frm_" + frmid);
+  var flds = [];
+  if (dataflds){
+    flds = dataflds;
+  } 
+ 
+  for (var i = 0; i < frm.elements.length; i++) {
+    var field = frm.elements[i];
+    //console.log("field:" + field.id + " Name:" + field.getAttribute("name"));
+    if (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA"){
+      if (field.classList.contains("tagedit")){
+        var fvalue=field.value.trim();
+        var ndata = null;
+        if (fvalue != ""){
+          ndata =  fvalue.split(",");  
+        }
+       
+        flds[field.getAttribute("name")] = ndata;
+      }else if (field.tagName == "TEXTAREA" ){
+        if (field.classList.contains("richeditarea")){
+          flds[field.getAttribute("name")] = tinymce.get(field.id).getContent();
+        } else {
+          flds[field.getAttribute("name")] = field.innerHTML;
+        }
+        
+      }else if (field.type == "checkbox" ){
+        if (field.checked){
+          flds[field.getAttribute("name")] = "1";
+        } else {
+          flds[field.getAttribute("name")] = "";
+        }
+        
+      }
+      else {
+        if (field.tagName == "SELECT" && field.multiple == true){
+          var opts = field.selectedOptions;
+          var vals = [];
+          for (var o in opts){
+            if (opts[o].value){
+              vals.push(opts[o].value);
+            }
+          }
+          if (vals.length > 0) {
+            flds[field.getAttribute("name")] = vals;
+          } else {
+            flds[field.getAttribute("name")] = "";
+          }
+          
+        } else {
+          flds[field.getAttribute("name")] = field.value;
+        }
+        
+      }
+      
+    }
+  }
+  return flds;
+}
+
+function cleanform(frmname){
+  //console.log("Clean Form: " + frmname);
+  var frm = document.getElementById("frm_" + frmname);
+  
+  for (var f in frm){
+    //console.log(frm[f].id);
+    if (frm[f] && frm[f].id){
+    if (frm[f].tagName == 'INPUT'){
+      //console.log("is INPUT" + frm[f].id + " type:" + frm[f].type + " class:" + frm[f].classList);
+      if (frm[f].type == "checkbox"){
+        frm[f].checked = false;
+      } else if (frm[f].classList.contains("datefield")){
+          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
+      } else if (frm[f].classList.contains("choices__input")){
+        if (choice[frmname][frm[f].id]){
+          choice[frmname][frm[f].id].removeActiveItems();
+        }
+      } else {
+        frm[f].value = "";
+      }
+    }
+    if (frm[f].tagName == 'SELECT'){
+      //console.log("is INPUT" + frm[f].id + " multiple:" + frm[f].multiple + " class:" + frm[f].classList);
+      if (frm[f].multiple == true){
+        if (frm[f].classList.contains("choices__input")){
+          choice[frmname][frm[f].id].removeActiveItems();
+        }
+      } else {
+        frm[f].value = "";
+      }
+      
+    }
+    if (frm[f].tagName == 'TEXTAREA'){
+      //console.log("is INPUT" + frm[f].id +  " class:" + frm[f].classList);
+      if (frm[f].classList.contains("richeditarea")){
+        tinymce.get(frm[f].id).setContent("");
+      } else {
+        frm[f].innerHTML = "";
+      } 
+    }
+  }
+  }
+  return false;
+}
+
+function cleanform2(frmname,choices){
+  //console.log("Clean Form: " + frmname);
+  var frm = document.getElementById("frm_" + frmname);
+  
+  for (var f in frm){
+    //console.log(frm[f].id);
+    if (frm[f] && frm[f].id){
+    if (frm[f].tagName == 'INPUT'){
+      //console.log("is INPUT" + frm[f].id + " type:" + frm[f].type + " class:" + frm[f].classList);
+      if (frm[f].type == "checkbox"){
+        frm[f].checked = false;
+      } else if (frm[f].classList.contains("datefield")){
+          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
+      } else if (frm[f].classList.contains("choices__input")){
+        if (choices[frm[f].id]){
+          choices[frm[f].id].removeActiveItems();
+        }
+      } else {
+        frm[f].value = "";
+      }
+    }
+    if (frm[f].tagName == 'SELECT'){
+      //console.log("is INPUT" + frm[f].id + " multiple:" + frm[f].multiple + " class:" + frm[f].classList);
+      if (frm[f].multiple == true){
+        if (frm[f].classList.contains("choices__input")){
+          choices[frm[f].id].removeActiveItems();
+        }
+      } else {
+        frm[f].value = "";
+      }
+      
+    }
+    if (frm[f].tagName == 'TEXTAREA'){
+      //console.log("is INPUT" + frm[f].id +  " class:" + frm[f].classList);
+      if (frm[f].classList.contains("richeditarea")){
+        tinymce.get(frm[f].id).setContent("");
+      } else {
+        frm[f].innerHTML = "";
+      } 
+    }
+  }
+  }
+  return false;
+}
+
+function fillformbydataclass(dataclass,data,readonly = false){
+  //console.log(data);
+  var frm = document.querySelectorAll('.data_'+ dataclass);
+  if (data){
+    for (var f in frm){
+      //console.log(frm[f]);
+      if (data[frm[f].id]){
+        //console.log(frm[f].id + " => " + data[frm[f].id]);
+        if (readonly){ frm[f].readonly = true;}
+        if (frm[f].tagName == 'INPUT'){
+          if (frm[f].type == "checkbox"){
+            if (data[frm[f].id] == "1"){
+              frm[f].checked = true;
+            } else {
+              frm[f].checked = false;
+            }
+          } else if (frm[f].classList.contains("datefield")){ 
+            frm[f]._flatpickr.setDate(data[frm[f].id]);
+          } else if (frm[f].classList.contains("timefield")){ 
+            frm[f]._flatpickr.setDate(data[frm[f].id]);
+          }else if (frm[f].classList.contains("choices__input")){  
+            if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
+              choice[dataclass][frm[f].id].setValue(JSON.parse(data[frm[f].id])); 
+            }
+          } else {
+            frm[f].value=data[frm[f].id];
+          }
+        }
+        if (frm[f].tagName == 'SELECT'){
+          if (frm[f].classList.contains("choices__input")){
+            if (frm[f].multiple == true){
+              //console.log(data[frm[f].id]);
+              choice[dataclass][frm[f].id].setChoiceByValue(JSON.parse(data[frm[f].id]));
+            }else {
+              choice[dataclass][frm[f].id].setChoiceByValue(data[frm[f].id]);
+            }
+          } else {
+            frm[f].value=data[frm[f].id];
+          }
+          
+        }
+      }
+      
+    }
+  }
+}
+
+function fillformbydataclass2(dataclass,choices,data){
+  //console.log(data);
+  var frm = document.querySelectorAll('.data_'+ dataclass);
+  if (data){
+    for (var f in frm){
+      //console.log(frm[f]);
+      if (data[frm[f].id]){
+        //console.log(frm[f].id + " => " + data[frm[f].id]);
+        
+        if (frm[f].tagName == 'INPUT'){
+          if (frm[f].type == "checkbox"){
+            if (data[frm[f].id] == "1"){
+              frm[f].checked = true;
+            } else {
+              frm[f].checked = false;
+            }
+          } else if (frm[f].classList.contains("datefield")){ 
+            frm[f]._flatpickr.setDate(data[frm[f].id]);
+          } else if (frm[f].classList.contains("timefield")){ 
+            frm[f]._flatpickr.setDate(data[frm[f].id]);
+          }else if (frm[f].classList.contains("choices__input")){  
+            if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
+              choices[frm[f].id].setValue(JSON.parse(data[frm[f].id])); 
+            }
+          } else {
+            frm[f].value=data[frm[f].id];
+          }
+        }
+        if (frm[f].tagName == 'SELECT'){
+          if (frm[f].classList.contains("choices__input")){
+            if (frm[f].multiple == true){
+              //console.log(data[frm[f].id]);
+              choices[frm[f].id].setChoiceByValue(JSON.parse(data[frm[f].id]));
+            }else {
+              choices[frm[f].id].setChoiceByValue(data[frm[f].id]);
+            }
+          } else {
+            frm[f].value=data[frm[f].id];
+          }
+          
+        }
+      }
+      
+    }
+  }
+}
+
+function fillselectlist(obj,data,vidcol,vvalcol){
+  var sellist = [];
+  obj.clearStore();
+  if (data){
+    for (var i in data){
+      sellist.push({value:data[i][vidcol],label:data[i][vvalcol]});
+    }
+  }
+  obj.setChoices(sellist, 'value', 'label', true);
+  return false;
+}
\ No newline at end of file
diff --git a/backoffice/js/module_global.js b/backoffice/js/module_global.js
new file mode 100644
index 0000000..8cc297b
--- /dev/null
+++ b/backoffice/js/module_global.js
@@ -0,0 +1,92 @@
+document.addEventListener("DOMContentLoaded", function() {
+  //console.log( "Iframe "+ location.pathname.substring(location.pathname.lastIndexOf("/")) +" ready!" );
+  initpage();
+});
+
+var module = {
+  viewpanel: function(pnlname){
+    console.log(pnlname);
+    var panels = document.getElementsByClassName("panel");
+    var toolbars = document.getElementsByClassName("toolbar");
+    currentview = pnlname;
+    for (var p=0;p tbody > tr:first-child").children();
+//   //   var colnum = cols.length -1;
+//   //   console.log("childnum:" + colnum);
+//   //   for (var i=1;i<=colnum;i++){
+//   //     wx = $("#tbl_"+tblmodule+" > tbody > tr:first-child > td:nth-child("+ i +")").width();
+//   //     // wx = wx +3;
+//   //     $("#tbl_"+tblmodule+"_head > thead > tr > th:nth-child("+ i +")").width(wx);
+//   //   }
+// }
+
+// function sectionload(sectionid,callback){
+//   var sec = document.querySelectorAll('section');
+//   for (var i in sec){
+//     sec[i].style.display = 'none';
+//   }
+//   if (callback){
+//     callback;
+//   }
+//   document.getElementById(sectionid).style.display = 'block';
+// }
+
+
+// function emptyform(id){
+//   // $("#" + id + "> input,select,textarea").each(
+//     // function(){
+//       // console.log("Set Empty Value On" + $(this).id);
+//     // }
+
+//   // );
+// }
\ No newline at end of file
diff --git a/backoffice/js/request.js b/backoffice/js/request.js
new file mode 100644
index 0000000..d63cf1d
--- /dev/null
+++ b/backoffice/js/request.js
@@ -0,0 +1,119 @@
+var api = location.origin + location.pathname.substring(0,location.pathname.lastIndexOf('/')) + '/api/';
+if (location.pathname.indexOf('module') > 0){
+  api = location.origin + location.pathname.substring(0, location.pathname.indexOf('module')) + 'api/';
+}
+// console.log(api);
+var req = {
+    multipartform: function(url,frmdata,callback=null){
+    var ret = null;
+    var rdata = null;
+    var async = false;
+    if (callback){
+      async=true;
+    }
+    
+    var request = new XMLHttpRequest();
+    
+    //console.log(frmdata);
+    var sendurl = api + url;
+    //console.log("sending URL: " + "POST" + " => " +sendurl);
+    request.open("POST", sendurl, true);
+    request.onload = function(){
+      if (request.status >= 200 && request.status <= 400){
+        //console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
+        if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
+          var xparse = JSON.parse(request.responseText);
+          ret = xparse.result;
+          //console.log(ret);
+        }
+        else {
+          ret = request.responseText;
+        }
+        if (async){
+          callback(ret);
+        }
+      } else {
+        alert("ServerERROR:" + request.status + "\n" + request.responseText);
+      }
+    };
+    request.onerror = function(){
+      alert("Connection ERROR!\n" + url);
+    };
+  
+      request.setRequestHeader('Content-Type','multipart/form-data; charset=UTF-8');
+      request.send(frmdata);
+    return ret;
+  },
+  reqdata: function(method,url,data,callback=null){
+    
+    var ret = null;
+    var rdata = null;
+    var async = false;
+    if (callback){
+      async=true;
+    }
+    
+    var request = new XMLHttpRequest();
+    if (typeof data == 'object'){
+      var xdata = [];
+      for (var i in data){
+         var value = '';
+         if (typeof(data[i]) == 'object'){
+           value = encodeURIComponent(JSON.stringify(data[i]));
+         } else {
+           value = encodeURIComponent(data[i]);
+         }
+         xdata.push(i + "=" + value);
+      }
+      rdata = xdata.join("&");
+    }else {
+      rdata = data;
+    }
+    //console.log("Data to send: " + decodeURIComponent(rdata));
+    var sendurl = api + url;
+    if (method.toUpperCase() == 'GET'){
+      sendurl = sendurl + '?' + rdata;
+    }
+    //console.log("sending URL: " + method + " => " +sendurl + '?' + rdata);
+    request.open(method.toUpperCase(), sendurl, true);
+    request.onload = function(){
+      if (request.status >= 200 && request.status <= 400){
+         console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
+        if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
+          if (request.responseText){
+            console.log(request.responseText);
+            var xparse = JSON.parse(request.responseText);
+            ret = xparse.result;
+          } else {
+            ret = null;  
+          }
+          
+        }else {
+          ret = request.responseText;
+        }
+        callback(ret);
+      } else {
+        //console.log("ServerERROR: " + request.status + "\n" + request.responseText);
+        alert("ServerERROR:" + request.status + "\n" + request.responseText);
+      }
+    };
+    request.onerror = function(){
+      //console.log("ERROR: connection ERROR\n" + url);
+      alert("Connection ERROR!\n" + url);
+    };
+    if (method.toUpperCase() == 'POST'){
+      request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
+      request.send(rdata);
+    } else {
+      //request.withCredentials = true;
+      request.send();
+    }
+    return ret;
+  },
+  asyncNoEvent: function(data){
+    console.log("query done");
+    console.log(data);
+    console.log("done");
+  }
+  
+}
\ No newline at end of file
diff --git a/backoffice/tmp/sql.log b/backoffice/tmp/sql.log
new file mode 100644
index 0000000..e69de29
diff --git a/backoffice/tmpl/block/cgu.tt b/backoffice/tmpl/block/cgu.tt
new file mode 100644
index 0000000..51564c1
--- /dev/null
+++ b/backoffice/tmpl/block/cgu.tt
@@ -0,0 +1,216 @@
+
+

+1 : Objet

+

+Les présentes « conditions générales d'utilisation » +ont pour objet l'encadrement juridique des modalités de mise à +disposition des services du site solana-architecture.lu +et leur utilisation par « l'Utilisateur ».

+

+Les conditions générales d'utilisation doivent être acceptées par +tout Utilisateur souhaitant accéder au site. Elles constituent le +contrat entre le site et l'Utilisateur. L'accès au site par +l'Utilisateur signifie son acceptation des présentes conditions +générales d'utilisation.

+

+ En cas de non-acceptation des conditions générales d'utilisation + stipulées dans le présent contrat, l'Utilisateur se doit de + renoncer à l'accès des services proposés par le site.

+

Solana Architecture s.à r.l. se réserve le droit de modifier unilatéralement et + à tout moment le contenu des présentes conditions générales + d'utilisation.

+

+2 : Mentions légales

+

+L'édition du site solana-architecture.lu est +assurée par l'entreprise Solana Architecture s.à r.l. dont le +siège social est situé à 61, rue des Trévires - L- Luxembourg-Bonnevoie.

+

+Responsable de la publication Web est Martin Solana (Gérant).

+ + +

3 : +Définitions

+

+La présente clause a pour objet de définir les différents termes +essentiels du contrat :

+
  • + Utilisateur : ce terme désigne toute personne qui utilise le + site ou l'un des services proposés par le site.

    +
  • Contenu + utilisateur : ce sont les données transmises par l'Utilisateur + au sein du site.

    +
  • Membre : + l'Utilisateur qui est employé d'une entreprise qui aimerais transferer des soumissions proposé par Solana Architecture s.à r.l. et qui peut s'identifié au site.

    +
  • Identifiant + et mot de passe : c'est l'ensemble des informations nécessaires + à l'identification d'un Utilisateur sur le site. L'identifiant et + le mot de passe permettent à l'Utilisateur d'accéder à des + services réservés aux membres du site. Le mot de passe est + confidentiel.

    +

4 : +accès aux services

+

+Le site permet à l'Utilisateur un accès gratuit aux services +suivants :

+
  • + Modifier ses données personnelles est les données du club;

    +
  • Transférer et télécharger les documents nécessaires pour faire des soumissions;

    +
  • consulter les information et documents utiles et nécessaires pour faire des soumissions;

    +

+Le site est accessible gratuitement en tout lieu à tout Utilisateur +ayant un accès à Internet. Tous les frais supportés par +l'Utilisateur pour accéder au service (matériel informatique, +logiciels, connexion Internet, etc.) sont à sa charge.

+

+Selon le cas :

+

+L'Utilisateur non membre n'a pas accès aux services réservés aux +membres. Pour cela, il doit s'identifier à l'aide de son identifiant +et de son mot de passe.

+ +

+Le site met en œuvre tous les moyens mis à sa disposition pour +assurer un accès de qualité à ses services. L'obligation étant de +moyens, le site ne s'engage pas à atteindre ce résultat.

+

+Tout événement dû à un cas de force majeure ayant pour +conséquence un dysfonctionnement du réseau ou du serveur n'engage +pas la responsabilité de solana-architecture.lu.

+

+L'accès aux services du site peut à tout moment faire l'objet d'une +interruption, d'une suspension, d'une modification sans préavis pour +une maintenance ou pour tout autre cas. L'Utilisateur s'oblige à ne +réclamer aucune indemnisation suite à l'interruption, à la +suspension ou à la modification du présent contrat.

+

+L'Utilisateur a la possibilité de contacter le site par messagerie +électronique à l'adresse info [ at ] solana-architecture.lu. +

+

5 : +Propriété intellectuelle

+

+Les marques, logos, signes et tout autre contenu du site font l'objet +d'une protection par le Code de la propriété intellectuelle et plus +particulièrement par le droit d'auteur.

+

+L'Utilisateur sollicite l'autorisation préalable du site pour toute +reproduction, publication, copie des différents contenus.

+

+L'Utilisateur s'engage à une utilisation des contenus du site dans +un cadre strictement privé. Une utilisation des contenus à des fins +commerciales est strictement interdite.

+

+Tout contenu mis en ligne par l'Utilisateur est de sa seule +responsabilité. L'Utilisateur s'engage à ne pas mettre en ligne de +contenus pouvant porter atteinte aux intérêts de tierces personnes. +Tout recours en justice engagé par un tiers lésé contre le site +sera pris en charge par l'Utilisateur. +

+

+Le contenu de l'Utilisateur peut être à tout moment et pour +n'importe quelle raison supprimé ou modifié par le site. +L'Utilisateur ne reçoit aucune justification et notification +préalablement à la suppression ou à la modification du contenu +Utilisateur.

+

6 : +Données personnelles

+

+Les informations demandées à l'inscription au site sont +nécessaires et obligatoires pour la création du compte de +l'Utilisateur. En particulier, l'adresse électronique pourra être +utilisée par le site pour l'administration, la gestion et +l'animation du service.

+

+Le site assure à l'Utilisateur une collecte et un traitement +d'informations personnelles dans le respect de la vie privée +conformément à la loi européen des protection de données relative à +l'informatique, aux fichiers et aux libertés.

+

+L'Utilisateur dispose d'un droit d'accès, de rectification, de +suppression et d'opposition de ses données personnelles. +L'Utilisateur exerce ce droit via :

+
  • + Formulaire mis à disposition;

    + +
+

7 : +Responsabilité et force majeure

+

+Les sources des informations diffusées sur le site sont réputées +fiables. Toutefois, le site se réserve la faculté d'une +non-garantie de la fiabilité des sources. Les informations données +sur le site le sont à titre purement informatif. Ainsi, +l'Utilisateur assume seul l'entière responsabilité de l'utilisation +des informations et contenus du présent site.

+

+L'Utilisateur s'assure de garder son mot de passe secret. Toute +divulgation du mot de passe, quelle que soit sa forme, est interdite.

+

+L'Utilisateur assume les risques liés à l'utilisation de son +identifiant et mot de passe. Le site décline toute responsabilité.

+

+Tout usage du service par l'Utilisateur ayant directement ou +indirectement pour conséquence des dommages doit faire l'objet d'une +indemnisation au profit du site.

+

+Une garantie optimale de la sécurité et de la confidentialité des +données transmises n'est pas assurée par le site. Toutefois, le +site s'engage à mettre en œuvre tous les moyens nécessaires afin +de garantir au mieux la sécurité et la confidentialité des +données.

+

+La responsabilité du site ne peut être engagée en cas de force +majeure ou du fait imprévisible et insurmontable d'un tiers.

+

8 : +Liens hypertextes

+

+De nombreux liens hypertextes sortants sont présents sur le site, +cependant les pages web où mènent ces liens n'engagent en rien la +responsabilité de solana-architecture.lu qui n'a +pas le contrôle de ces liens.

+

+L'Utilisateur s'interdit donc à engager la responsabilité du site +concernant le contenu et les ressources relatives à ces liens +hypertextes sortants.

+

9 : +Évolution du contrat

+

+Le site se réserve à tout moment le droit de modifier les clauses +stipulées dans le présent contrat.

+

10 : +Durée

+

+La durée du présent contrat est indéterminée. Le contrat produit +ses effets à l'égard de l'Utilisateur à compter de l'utilisation +du service.

+

11 : +Droit applicable et juridiction compétente

+

+La législation luxembourgeoise s'applique au présent contrat. En cas +d'absence de résolution amiable d'un litige né entre les parties, +seuls les tribunaux luxembourgeoises +sont compétents.

+ +

12 : +Publication par l'Utilisateur

+

+Le site permet aux membres de télécharger des fichiers.

+

+Dans ses publications, le membre s'engage à respecter les règles +de la Netiquette et les règles de droit en vigueur.

+

+Le site exerce une modération sur les publications et se réserve le droit de +refuser leur mise en ligne, sans avoir à s'en justifier auprès du +membre.

+

+Le membre reste titulaire de l'intégralité de ses droits de +propriété intellectuelle. Mais en publiant une publication sur le +site, il cède à l' entreprise SOlana Architecture s.à r.l. le droit non exclusif et +gratuit de représenter, reproduire, adapter, modifier, diffuser et +distribuer sa publication, directement ou par un tiers autorisé, +dans le monde entier, sur tout support (numérique ou physique), pour +la durée de la propriété intellectuelle. Le Membre cède notamment +le droit d'utiliser sa publication sur internet et sur les réseaux +

+ \ No newline at end of file diff --git a/backoffice/tmpl/block/dlgdeleterow.tt b/backoffice/tmpl/block/dlgdeleterow.tt new file mode 100644 index 0000000..903ec61 --- /dev/null +++ b/backoffice/tmpl/block/dlgdeleterow.tt @@ -0,0 +1,62 @@ +
+ +
+
+ × +

Supprimer

+
+
+ êtes vous sûre de vouloir supprimer la rangé sélectionné? + [% fieldhidden("dlgdeltable","delete",'','') %] + [% fieldhidden("dlgdelrowid","delete",'','') %] +
+
+ + +
+
+
+ \ No newline at end of file diff --git a/backoffice/tmpl/block/dlguploadfile.tt b/backoffice/tmpl/block/dlguploadfile.tt new file mode 100644 index 0000000..1126d3e --- /dev/null +++ b/backoffice/tmpl/block/dlguploadfile.tt @@ -0,0 +1,91 @@ +
+ +
+
+ × +

Fichier eroplueden

+
+
+
+ [% fieldhidden("table","upload",'','') %] + [% fieldhidden("row_id","upload","ident",'') %] + [% fieldhidden("filetype","upload",'','') %] + [% fieldfile("file","upload","Fichier auswielen",'','','') %] +
+
+
+ + [% formsavefilebutton('uploadfile','eroplueden','') %] +
+
+
+ \ No newline at end of file diff --git a/backoffice/tmpl/block/head.tt b/backoffice/tmpl/block/head.tt new file mode 100644 index 0000000..bdf7408 --- /dev/null +++ b/backoffice/tmpl/block/head.tt @@ -0,0 +1,29 @@ + + + + + [% sitename %] - [% pagename %] + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backoffice/tmpl/block/snackbar.tt b/backoffice/tmpl/block/snackbar.tt new file mode 100644 index 0000000..464a162 --- /dev/null +++ b/backoffice/tmpl/block/snackbar.tt @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/backoffice/tmpl/block/toolbars.tt b/backoffice/tmpl/block/toolbars.tt new file mode 100644 index 0000000..9c0073a --- /dev/null +++ b/backoffice/tmpl/block/toolbars.tt @@ -0,0 +1,9 @@ +[% MACRO tabletoolbar(ident) BLOCK -%] + +
+ + + + +
+[% END -%] \ No newline at end of file diff --git a/backoffice/tmpl/macro/fields.tt b/backoffice/tmpl/macro/fields.tt new file mode 100644 index 0000000..2cdc4d3 --- /dev/null +++ b/backoffice/tmpl/macro/fields.tt @@ -0,0 +1,140 @@ +[% MACRO fieldhidden(column,table,ident,value) BLOCK -%] + +[% END -%] +[% MACRO fieldeditbox(column,table,title,size,state,value,plhold) BLOCK -%] +
+ + 0 %][% state %][% END %]/> + +
+[% END -%] +[% MACRO fieldfile(column,table,title,size,state,value) BLOCK -%] +
+ + 0 %][% state %][% END %]/> + +
+[% END -%] +[% MACRO fieldpasswordbox(column,table,title,size,state,value) BLOCK -%] +
+ + 0 %][% state %][% END %]/> + +
+[% END -%] +[% MACRO fieldtagbox(column,table,title,size,state,value) BLOCK -%] +
+ + 0 %][% state %][% END %]/> + +
+[% END -%] +[% MACRO fieldcheckbox(column,table,title,size,state,value) BLOCK -%] +
+
+ 0 %][% state %][% END %]> + +
+[% END -%] + +[% MACRO fieldemailbox(column,table,title,size,state,value) BLOCK -%] +
+ + 0 %][% state %][% END %]/> +
+[% END -%] + +[% MACRO fieldselectbox(column,table,title,size,state,value,extraclass) BLOCK -%] + [% IF state.length > 0 %] + [% fieldeditbox(column,table,title,size,state,value) %] + [% ELSE %] +
+ + + +
+ [% END %] +[% END -%] +[% MACRO fieldmultiselectbox(column,table,title,size,state,value) BLOCK -%] + [% IF state.length > 0 %] + [% fieldeditbox(column,table,title,size,state,value) %] + [% ELSE %] +
+ + + +
+ [% END %] +[% END -%] +[% MACRO fielddatetimebox(column,table,title,size,state,value) BLOCK -%] +
+ + 0 %][% state %][% END %]]/> + +
+[% END -%] +[% MACRO fielddatebox(column,table,title,size,state,value) BLOCK -%] +
+ + 0 %][% state %][% END %]]/> + +
+[% END -%] +[% MACRO fieldtimebox(column,table,title,size,state,value) BLOCK -%] + [% IF state.length > 0 %] + [% fieldeditbox(column,table,title,size,state,value) %] + [% ELSE %] +
+ [% END %] +[% END -%] +[% MACRO fieldtextarea(column,table,title,size,state,height,value) BLOCK -%] +
+ + +
+[% END -%] +[% MACRO fieldrichtextarea(column,table,title,size,state,height,value) BLOCK -%] +
+ + +
+[% END -%] + +[% MACRO formsavebutton(formname,btnname) BLOCK -%] +
+ +
+[% END -%] +[% MACRO formsavetextfilebutton(formname,btnname) BLOCK -%] +
+ +
+[% END -%] +[% MACRO formdlgsavebutton(formname,btnname,clbk) BLOCK -%] + +[% END -%] +[% MACRO formsavefilebutton(formname,btnname,container) BLOCK -%] +[% IF container.length > 0 %] +
+ [% END %] + +[% IF container.length > 0 %] +
+[% END %] +[% END -%] + + diff --git a/backoffice/tmpl/module/companies/index.js b/backoffice/tmpl/module/companies/index.js new file mode 100644 index 0000000..dc07ef2 --- /dev/null +++ b/backoffice/tmpl/module/companies/index.js @@ -0,0 +1,180 @@ +var schemata = "public"; +var currentview = null; +function initpage(){ + //schemata = parent.admin.getcurrentSchemata(); + console.log("Current Schema:" + schemata); + companies.inittable(); + module.viewpanel("tbl_companies"); + //call("reportperiod","inittable"); +// flatpickr(".timefield",{ +// //altInput: true, +// //altFormat: "H:i", +// dateFormat: "H:i", +// //allowInput: true, +// defaultHour:'', +// defaultMinute:'', +// enableTime: true, +// noCalendar: true, +// time_24hr: true, +// "locale": "fr", +// }); +} + +// var tbl = null; +// [% sid = session.id %] +// [% IF(session.usergroups.search('admin') != 1) %] +// [% qcompany = dksdb.query("select id_company from vw_userlist where id=$sid;") %] +// [% company = qcompany.get_all() %] +// var idcompany = "[% company.0.id_company %]"; +// [% ELSE %] +// var idcompany = null; +// [% END %] +// //var choice = {"submissionaccess":{"projects":null,"cdm":null,"cdm_requests":null}}; + +// function initpage() { +// [% IF(session.usergroups.search('admin') == 1) %] + +// tbl = new Tabulator("#tbl_companies", { +// headerFilterPlaceholder: "filter...", +// height: "95vh", +// layout: "fitDataFill", +// selectable: 1, +// responsiveLayout: "collapse", +// columns: [{ +// title: "entreprise", +// field: "company", +// headerFilter: "input" +// }, { +// title: "address", +// field: "address", +// headerFilter: "input" +// }, { +// title: "cp", +// field: "zip", +// headerFilter: "input" +// }, { +// title: "ville", +// field: "city", +// headerFilter: "input" +// }, { +// title: "pays", +// field: "country", +// headerFilter: "input" +// }] +// }); +// gettbldata(); + +// [% ELSE %] +// getcompanydata(idcompany); +// [% END %] + + +// } +// [% IF(session.usergroups.search('admin') == 1) %] + + + +// function gettbldata() { +// req.reqdata("POST", "db.cgi", { +// "get": "companylist" +// }, loadtbldata); + +// } + +// function loadtbldata(data) { +// if (data && data.sqldata) { +// tbl.setData(data.sqldata); +// } +// } + +// function edit() { + +// var udata = tbl.getSelectedData(); +// console.log(udata[0]); +// if (udata[0]) { +// var uid = udata[0].id; +// getcompanydata(uid); + +// } + +// } + +// function add() { +// cleanform('companies'); +// viewform(); +// } + +// function remove() { +// var udata = tbl.getSelectedData(); +// if (udata[0]) { +// if (confirm("Êtes vous sûre de supprimer l'entreprise selectionné?")) { +// req.reqdata("POST", "db.cgi", { +// "del": "1", +// "ident_companies_id": udata[0].id +// }, gettbldata); +// } +// } + +// } +// [% END %] + + +// function getcompanydata(id) { +// req.reqdata("POST", "db.cgi", {"get": "companydata","filter": "id=" + id}, fillformcompany); +// } + +// function fillformcompany(data) { +// cleanform('companies'); +// var isreadonly = false; +// [% IF(session.usergroups.search('admin') != 1) %] +// if (data.sqldata[0]["validated"] == 1) { +// isreadonly = true; +// } +// [% END %] +// if (data && data.sqldata) { +// fillformbydataclass('companies', data.sqldata[0], isreadonly); +// } +// if (isreadonly == true) { +// document.getElementById("btnsave_companies").style.display = 'none'; +// } +// } + +// function viewtable() { +// gettbldata(); +// document.getElementById("pnl_table").style.display = 'block'; +// document.getElementById("pnl_company").style.display = 'none'; +// } + +// function viewform(){ +// document.getElementById("pnl_table").style.display = 'none'; +// document.getElementById("pnl_company").style.display = 'block'; +// } + +//[% IF(session.usergroups.search('admin') == 1) %] +// function getprojects(){ +// req.reqdata("POST","db.cgi",{"get":"projectlist"},fillprojectlist); +// } + +// function fillprojectlist(data){ +// console.log("fill projectlist"); +// fillselectlist(choice["submissionaccess"]["projects"],data.sqldata,'id','project'); +// return false; +// } + +//[% END %] + +// function getcdms(){ +// req.reqdata("POST","db.cgi",{"get":"cdmlist"},fillcdmlist); +// } + +// function fillcdmlist(data){ +// console.log("fill cdmlist"); +// fillselectlist(choice["submissionaccess"]["cdm_requests"],data.sqldata,'id','cdm'); +// //var cdmlist = []; +// [% IF (session.usergroups.search('admin') == 1) %] +// fillselectlist(choice["submissionaccess"]["cdm"],data.sqldata,'id','cdm'); +// //choice["submissionaccess"]["cdm"].clearStore(); +// [% END %] + +// return false; +// } \ No newline at end of file diff --git a/backoffice/tmpl/module/companies/index.tt b/backoffice/tmpl/module/companies/index.tt new file mode 100644 index 0000000..f59f8b0 --- /dev/null +++ b/backoffice/tmpl/module/companies/index.tt @@ -0,0 +1,13 @@ +
+
+
+ + + [% INCLUDE "module/$module/widgets/companies/tbar_companies.tt" %] +
+
+ [% INCLUDE "module/$module/widgets/companies/tbl_companies.tt" %] + [% INCLUDE "module/$module/widgets/companies/frm_companies.tt" %] +
+[% INCLUDE block/dlgdeleterow.tt %] + diff --git a/backoffice/tmpl/module/companies/widgets/companies/companies.js b/backoffice/tmpl/module/companies/widgets/companies/companies.js new file mode 100644 index 0000000..d3eb751 --- /dev/null +++ b/backoffice/tmpl/module/companies/widgets/companies/companies.js @@ -0,0 +1,104 @@ +//var tbl_companies = null; +//var weekdays= ["mon","tue","wed","thu","fri","sat","sun"]; +var companies ={ + tbl: null, + current_company: null, + name: "companies", + choices:{}, + initform: function(){ + + }, + inittable: function(){ + companies.initform(); + companies.tbl = new Tabulator("#tbl_" + companies.name, { + headerFilterPlaceholder: "filter...", + height: "94vh", + layout: "fitData", + selectable: 1, + rowContext:function(e, row){ + //e - the click event object + //row - row component + e.preventDefault(); // prevent the browsers default context menu form appearing. + }, + columns: [{ + title: "entreprise", + field: "company", + headerFilter: "input" + }, { + title: "address", + field: "address", + headerFilter: "input" + }, { + title: "cp", + field: "zip", + headerFilter: "input" + }, { + title: "ville", + field: "city", + headerFilter: "input" + }, { + title: "pays", + field: "country", + headerFilter: "input" + }] + }); + companies.gettbldata(); + }, + gettbldata: function(){ + req.reqdata("POST", "db.cgi", { "get": companies.name + "list","schemata":schemata}, companies.loadtbldata); + }, + loadtbldata: function(data){ + if (data && data.sqldata) { companies.tbl.setData(data.sqldata);} + }, + add: function(){ + cleanform2(companies.name,companies.choices); + module.viewpanel('frm_' + companies.name); + }, + edit: function(){ + var udata = companies.tbl.getSelectedData(); + if (udata[0]) { + cleanform2(companies.name,companies.choices); + req.reqdata("POST", "db.cgi", { "get": companies.name + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, companies.fillform); + module.viewpanel('frm_' +companies.name); + } + }, + fillform: function(data){ + console.log("Fill Form 1"); + if (data && data.sqldata){ + console.log("Fill Form 2"); + fillformbydataclass2(companies.name,companies.choices,data.sqldata[0]); + } + }, + remove: function(){ + var udata = companies.tbl.getSelectedData(); + if (udata[0]) { + var uid = udata[0].id; + //TODO: delete Data + module.viewpanel('tbl_' + companies.name); + } + }, + saveform: function(){ + var wpdata = getformcontent(companies.name); + //TODO: save form + console.log(wpdata); + }, + // getcompany: function(ev,id){ + // console.log(id + "=>" + ev.detail.value); + // req.reqdata("POST","db.cgi",{"get":companies.name + "data","schemata":schemata,"filter":"id='" + ev.detail.value + "'"},companies.setcompany); + // }, + // setcompany: function(data){ + // if (data && data.sqldata){ + // console.log(data.sqldata[0]); + // fillformbydataclass("companies",data.sqldata[0],false); + // } + // }, + +} + + + + + + + + diff --git a/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt b/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt new file mode 100644 index 0000000..3638f51 --- /dev/null +++ b/backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt @@ -0,0 +1,35 @@ +[% PROCESS macro/fields.tt %] + + diff --git a/backoffice/tmpl/module/companies/widgets/companies/tbar_companies.tt b/backoffice/tmpl/module/companies/widgets/companies/tbar_companies.tt new file mode 100644 index 0000000..038663c --- /dev/null +++ b/backoffice/tmpl/module/companies/widgets/companies/tbar_companies.tt @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/backoffice/tmpl/module/companies/widgets/companies/tbl_companies.tt b/backoffice/tmpl/module/companies/widgets/companies/tbl_companies.tt new file mode 100644 index 0000000..26b61d1 --- /dev/null +++ b/backoffice/tmpl/module/companies/widgets/companies/tbl_companies.tt @@ -0,0 +1,3 @@ +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/dashboard/index.js b/backoffice/tmpl/module/dashboard/index.js new file mode 100644 index 0000000..c75ce58 --- /dev/null +++ b/backoffice/tmpl/module/dashboard/index.js @@ -0,0 +1,7 @@ +var schemata = null; +var allschemata = null; +function initpage(){ + schemata = parent.admin.getcurrentSchemata(); + allschemata = parent.admin.getAllSchemata(); + +} \ No newline at end of file diff --git a/backoffice/tmpl/module/dashboard/index.tt b/backoffice/tmpl/module/dashboard/index.tt new file mode 100644 index 0000000..a0c5377 --- /dev/null +++ b/backoffice/tmpl/module/dashboard/index.tt @@ -0,0 +1,19 @@ +[% appaccess = dksdb.prepare("select replace(ap.icon,'.svg','_white.svg') as icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? and ap.app != 'dashboard' order by ap.sort; ") %] + +
+
+
+
+
+
+ + [% FOREACH ap = appaccess.execute(session.id) %] +
+ +
+ [% END %] +
+
+
diff --git a/backoffice/tmpl/module/planning/index.js b/backoffice/tmpl/module/planning/index.js new file mode 100644 index 0000000..1e2655c --- /dev/null +++ b/backoffice/tmpl/module/planning/index.js @@ -0,0 +1,26 @@ +var schemata = null; +var currentview = null; +function initpage(){ + schemata = parent.admin.getcurrentSchemata(); + console.log("Current Schema:" + schemata); + reportperiod.inittable(); + staffworkplan.inittable(); + module.viewpanel("tbl_reportperiod"); + //call("reportperiod","inittable"); + flatpickr(".timefield",{ + //altInput: true, + //altFormat: "H:i", + dateFormat: "H:i", + //allowInput: true, + defaultHour:'', + defaultMinute:'', + enableTime: true, + noCalendar: true, + time_24hr: true, + "locale": "fr", + }); + +} + + + diff --git a/backoffice/tmpl/module/planning/index.tt b/backoffice/tmpl/module/planning/index.tt new file mode 100644 index 0000000..d797cf0 --- /dev/null +++ b/backoffice/tmpl/module/planning/index.tt @@ -0,0 +1,18 @@ + +
+
+
+ + + [% INCLUDE "module/$module/widgets/reportperiod/tbar_reportperiod.tt" %] + [% INCLUDE "module/$module/widgets/staffworkplan/tbar_staffworkplan.tt" %] +
+
+ [% INCLUDE "module/$module/widgets/reportperiod/tbl_reportperiod.tt" %] + [% INCLUDE "module/$module/widgets/staffworkplan/tbl_staffworkplan.tt" %] + [% INCLUDE "module/$module/widgets/staffworkplan/frm_staffworkplan.tt" %] +
+[% INCLUDE block/dlgdeleterow.tt %] +[% INCLUDE "module/$module/widgets/reportperiod/dlg_reportperiod.tt" %] + + diff --git a/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt b/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt new file mode 100644 index 0000000..f1f6508 --- /dev/null +++ b/backoffice/tmpl/module/planning/widgets/reportperiod/dlg_reportperiod.tt @@ -0,0 +1,30 @@ +[% PROCESS macro/fields.tt %] +
+ +
+
+ × +

editer/ajouter période

+
+
+
+ [% fieldhidden("id","reportperiod",'ident','') %] + [% fieldeditbox("periodname","reportperiod","Nom",'w3-third','','','') %] + [% fielddatebox("startdate","reportperiod","début",'w3-fifth','','','') %] + [% fielddatebox("enddate","reportperiod","fin",'w3-fifth','','','') %] +
+
+
+ + +
+
+
+ \ No newline at end of file diff --git a/backoffice/tmpl/module/planning/widgets/reportperiod/reportperiod.js b/backoffice/tmpl/module/planning/widgets/reportperiod/reportperiod.js new file mode 100644 index 0000000..8945cf4 --- /dev/null +++ b/backoffice/tmpl/module/planning/widgets/reportperiod/reportperiod.js @@ -0,0 +1,65 @@ +var reportperiod ={ + tbl: null, + name: "reportperiod", + initform: function(){ + + }, + inittable: function(){ + reportperiod.tbl = new Tabulator("#tbl_" + reportperiod.name, { + headerFilterPlaceholder: "filter...", + height: "94vh", + layout: "fitDataFill", + selectable: 1, + rowContext:function(e, row){ + //e - the click event object + //row - row component + //var contextMenu = CtxMenu(); + //contextMenu.addItem("Editer", edit()); + // Add our custom function to the menu + //cntextMenu.addItem("Hello World", ContextMenuExampleFunction); + + // Add a seperator + //contextMenu.addSeperator(); + e.preventDefault(); // prevent the browsers default context menu form appearing. + }, + columns: [{title: "Nom", field: "periodname",headerFilter: "input"}, + { title: "Début",field: "startdate",formatter:"datetime",formatterParams:{inputFormat:"yyyy-mm-dd",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} }, + { title: "Fin",field: "enddate",formatter:"datetime",formatterParams:{inputFormat:"yyyy-mm-dd",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} }, + ] + }); + reportperiod.initform(); + reportperiod.gettbldata(); + }, + gettbldata: function(){ + req.reqdata("POST", "db.cgi", { "get": reportperiod.name + "list","schemata":schemata}, reportperiod.loadtbldata); + }, + loadtbldata: function(data){ + if (data && data.sqldata) { reportperiod.tbl.setData(data.sqldata);} + }, + add: function(){ + cleanform(reportperiod.name); + module.viewdialog(reportperiod.name,null); + }, + remove: function(){ + var udata = tbl_reportperiod.getSelectedData(); + if (udata[0]) { + showdeletedlg(reportperiod.name,udata[0].id,null,gettbldata_workplan); + } + }, + edit: function(){ + var udata = reportperiod.tbl.getSelectedData(); + if (udata[0]) { + var uid = udata[0].id; + module.viewpanel('tbl_' + reportperiod.name); + } + }, + viewstaffplan: function(){ + var udata = reportperiod.tbl.getSelectedData(); + if (udata[0]){ + staffworkplan.datefrom = udata[0].startdate; + staffworkplan.dateto = udata[0].enddate; + staffworkplan.gettbldata(); + module.viewpanel('tbl_staffworkplan'); + } + } +} \ No newline at end of file diff --git a/backoffice/tmpl/module/planning/widgets/reportperiod/tbar_reportperiod.tt b/backoffice/tmpl/module/planning/widgets/reportperiod/tbar_reportperiod.tt new file mode 100644 index 0000000..e384dda --- /dev/null +++ b/backoffice/tmpl/module/planning/widgets/reportperiod/tbar_reportperiod.tt @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/backoffice/tmpl/module/planning/widgets/reportperiod/tbl_reportperiod.tt b/backoffice/tmpl/module/planning/widgets/reportperiod/tbl_reportperiod.tt new file mode 100644 index 0000000..5375e5d --- /dev/null +++ b/backoffice/tmpl/module/planning/widgets/reportperiod/tbl_reportperiod.tt @@ -0,0 +1,3 @@ +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/planning/widgets/staffworkplan/frm_staffworkplan.tt b/backoffice/tmpl/module/planning/widgets/staffworkplan/frm_staffworkplan.tt new file mode 100644 index 0000000..2ae89c7 --- /dev/null +++ b/backoffice/tmpl/module/planning/widgets/staffworkplan/frm_staffworkplan.tt @@ -0,0 +1,59 @@ +[% PROCESS macro/fields.tt %] +[% wd = [ + {'wd' => 'mon' ,'day' => 'Lundi'}, {'wd' => 'tue','day' => 'Mardi'}, {'wd' => 'wed','day' => 'Mercredi'}, {'wd' => 'thu','day' => 'Jeudi'}, {'wd' => 'fri','day' => 'Vendredi'}, {'wd' => 'sat' ,'day' => 'Samedi'}, {'wd' => 'sun','day' =>'Dimanche'} +] +%] + diff --git a/backoffice/tmpl/module/planning/widgets/staffworkplan/staffworkplan.js b/backoffice/tmpl/module/planning/widgets/staffworkplan/staffworkplan.js new file mode 100644 index 0000000..268c458 --- /dev/null +++ b/backoffice/tmpl/module/planning/widgets/staffworkplan/staffworkplan.js @@ -0,0 +1,243 @@ +//var tbl_staffworkplan = null; +var weekdays= ["mon","tue","wed","thu","fri","sat","sun"]; +var staffworkplan ={ + tbl: null, + current_workplan: null, + datefrom: null, + dateto: null, + name: "staffworkplan", + choices:{"id_staff":null,"weekdays":null,"id_workplan":null,"dayvacancy":null}, + initform: function(){ + flatpickr("#dates",{altInput: true, + altFormat: "d.m.Y", + mode: "multiple", + dateFormat: "Y-m-d", + allowInput: false, + "locale": "fr", + }); + flatpickr("#daterange",{altInput: true, + altFormat: "d.m.Y", + mode: "range", + dateFormat: "Y-m-d", + allowInput: false, + "locale": "fr", + }); + staffworkplan.choices["id_staff"] = new Choices('#id_staff',{ + searchEnabled: false, + itemSelectText: '', + removeItemButton: true, + choices : [] + }); + staffworkplan.choices["id_workplan"] = new Choices('#id_workplan',{ + searchEnabled: false, + itemSelectText: '', + removeItemButton: true, + choices : [] + }); + staffworkplan.choices["dayvacancy"] = new Choices('.dayvacancy',{ + searchEnabled: false, + itemSelectText: '', + //removeItemButton: true, + shouldSort: false, + shouldSortItems: false, + choices : [{"value":"","label":""},{"value":"normal","label":"normal"},{"value":"extra","label":"extraordinaire"},{"value":"ill","label":"maladie"}] + }); + staffworkplan.choices["weekdays"] = new Choices('#weekdays',{ + searchEnabled: false, + itemSelectText: '', + removeItemButton: true, + shouldSort: false, + shouldSortItems: false, + choices : [{"value":"1","label":"Lundi"},{"value":"2","label":"Mardi"},{"value":"3","label":"Mecredi"},{"value":"4","label":"Jeudi"},{"value":"5","label":"Vendredi"},{"value":"6","label":"Samedi"},{"value":"7","label":"Dimanche"}] + }); + staffworkplan.getstaff(); + staffworkplan.getwptemplates(); + staffworkplan.choices["id_workplan"].passedElement.element.addEventListener('change', function(event){staffworkplan.getworkplan(event,this.id)},false); + var tfields = document.getElementsByClassName("timefield"); + for (var i=0;iSemaine", field:"week_timetotal", bottomCalc:staffworkplan.periodtimesum}, + { title: "Lundi", + columns: [ + { title: "heures",field: "dspmontimes",formatter: "html",width:120 }, + { title: "total",field: "mon_timetotal",formatter: "html" }, + ] + }, + { title: "Mardi", + columns: [ + { title: "heures",field: "dsptuetimes",formatter: "html",width:120 }, + { title: "total",field: "tue_timetotal",formatter: "html" }, + ] }, + { title: "Mercredi", + columns: [ + { title: "heures",field: "dspwedtimes",formatter: "html",width:120 }, + { title: "total",field: "wed_timetotal",formatter: "html" }, + ] }, + { title: "Jeudi",columns: [ + { title: "heures",field: "dspthutimes",formatter: "html",width:120 }, + { title: "total",field: "thu_timetotal",formatter: "html" }, + ] }, + { title: "Vendredi",columns: [ + { title: "heures",field: "dspfritimes",formatter: "html",width:120 }, + { title: "total",field: "fri_timetotal",formatter: "html" }, + ] }, + { title: "Samedi",columns: [ + { title: "heures",field: "dspsatimes",formatter: "html",width:120 }, + { title: "total",field: "sat_timetotal",formatter: "html" }, + ] }, + { title: "Dimanche",columns: [ + { title: "heures",field: "dspsuntimes",formatter: "html",width:120 }, + { title: "total",field: "sun_timetotal",formatter: "html" }, + ] } + ] + }); + staffworkplan.gettbldata(); + }, + gettbldata: function(){ + req.reqdata("POST", "db.cgi", { "get": staffworkplan.name + "list","schemata":schemata}, staffworkplan.loadtbldata); + }, + loadtbldata: function(data){ + if (data && data.sqldata) { staffworkplan.tbl.setData(data.sqldata);} + }, + add: function(){ + cleanform2(staffworkplan.name,staffworkplan.choices); + module.viewpanel('frm_' + staffworkplan.name); + }, + edit: function(){ + var udata = staffworkplan.tbl.getSelectedData(); + if (udata[0]) { + var wpdata = ""; + cleanform2(staffworkplan.name,staffworkplan.choices); + req.reqdata("POST", "db.cgi", { "get": staffworkplan.name + "_weekly","schemata":schemata, "filter":"id_staff=" + udata[0].id_staff + " and calweek='" + udata[0].calweek + "' AND calyear='"+ udata[0].calyear +"'"}, staffworkplan.fillform); + module.viewpanel('frm_' +staffworkplan.name); + } + }, + fillform: function(data){ + if (data && data.sqldata){ + fillformbydataclass2(staffworkplan.name,staffworkplan.choices,data.sqldata[0]); + } + }, + remove: function(){ + var udata = staffworkplan.tbl.getSelectedData(); + if (udata[0]) { + var uid = udata[0].id; + module.viewpanel('tbl_' + staffworkplan.name); + } + }, + saveform: function(){ + var wpdata = getformcontent(staffworkplan.name); + console.log(wpdata); + }, + getstaff: function(){ + req.reqdata("POST","db.cgi",{"get":"stafflist","schemata":schemata},staffworkplan.fillstaff); + }, + fillstaff: function(data){ + fillselectlist(staffworkplan.choices["id_staff"],data.sqldata,'id','dspname'); + }, + getwptemplates: function(){ + req.reqdata("POST","db.cgi",{"get":"workplanlist","schemata":schemata},staffworkplan.fillwptemplates); + }, + fillwptemplates: function(data){ + fillselectlist(staffworkplan.choices["id_workplan"],data.sqldata,'id','workplan'); + }, + getworkplan: function(ev,id){ + console.log(id + "=>" + ev.detail.value); + + req.reqdata("POST","db.cgi",{"get":"workplansdata","schemata":schemata,"filter":"id=" + ev.detail.value},staffworkplan.setworkplan); + }, + setworkplan: function(data){ + if (data && data.sqldata){ + console.log(data.sqldata[0]); + var wpdata = data.sqldata[0]; + delete wpdata["id"]; + fillformbydataclass("staffworkplan",data.sqldata[0],false); + for (var w in weekdays){ + //console.log() + staffworkplan.checktime(weekdays[w] + "_timestart1"); + } + } + }, + setvacancytime: function(ev,id){ + console.log("Vacancy: " + id); + wday = id.substring(0,3); + if (ev.detail.value == ""){ + document.getElementById(wday + "_vacancytime")._flatpickr.clear(); + } else if (document.getElementById(wday + "_vacancytime").value == ""){ + document.getElementById(wday + "_vacancytime")._flatpickr.setDate(document.getElementById(wday + "_timetotal").value); + } + }, + checktime: function(id){ + wday=id.substring(0,3); + console.log("timefield: " + wday +"=>" + id + " changed"); + var mt1 = 0; + var mt2 = 0; + var mtp = 0; + if ((document.getElementById(wday + "_timeend1").value != "") && (document.getElementById(wday + "_timestart1").value != "")){ + mt1 = timecalc.TimeToMinutes(document.getElementById(wday + "_timeend1").value)-timecalc.TimeToMinutes(document.getElementById(wday + "_timestart1").value); + } + if ((document.getElementById(wday + "_timeend2").value != "") && (document.getElementById(wday + "_timestart2").value != "")){ + mt2 = timecalc.TimeToMinutes(document.getElementById(wday + "_timeend2").value)-timecalc.TimeToMinutes(document.getElementById(wday + "_timestart2").value); + } + if (document.getElementById(wday + "_timepause").value != ""){ + mtp = timecalc.TimeToMinutes(document.getElementById(wday + "_timepause").value); + } + document.getElementById(wday + "_timetotal").value= timecalc.MinutesToTime(mt1+mt2-mtp); + + }, + periodtimesum: function(values, data, calcParams){ + console.log(values); + console.log(data); + calc = 0; + for (var i=0;i