Merge branch 'staging' into releases/release-hytha-prod
This commit is contained in:
commit
f509f5e988
@ -29,3 +29,18 @@
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pending-event {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pending-event::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
background: rgb(23, 23, 23);
|
||||||
|
transform: scaleY(0.5);
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -37436,7 +37436,7 @@ function b(n) {
|
|||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/publicPath */
|
/******/ /* webpack/runtime/publicPath */
|
||||||
/******/ (() => {
|
/******/ (() => {
|
||||||
/******/ __webpack_require__.p = "/apps/calendar/js/";
|
/******/ __webpack_require__.p = "\\apps\\calendar\\js\\";
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/nonce */
|
/******/ /* webpack/runtime/nonce */
|
||||||
@ -37516,4 +37516,4 @@ const booking = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_1__.loadSta
|
|||||||
|
|
||||||
/******/ })()
|
/******/ })()
|
||||||
;
|
;
|
||||||
//# sourceMappingURL=calendar-appointments-confirmation.js.map?v=63693119e9fcd0c9b284
|
//# sourceMappingURL=calendar-appointments-confirmation.js.map?v=4a43baa099014d97ecc5
|
||||||
File diff suppressed because one or more lines are too long
@ -37468,7 +37468,7 @@ function b(n) {
|
|||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/publicPath */
|
/******/ /* webpack/runtime/publicPath */
|
||||||
/******/ (() => {
|
/******/ (() => {
|
||||||
/******/ __webpack_require__.p = "/apps/calendar/js/";
|
/******/ __webpack_require__.p = "\\apps\\calendar\\js\\";
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/nonce */
|
/******/ /* webpack/runtime/nonce */
|
||||||
@ -37552,4 +37552,4 @@ const booking = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_1__.loadSta
|
|||||||
|
|
||||||
/******/ })()
|
/******/ })()
|
||||||
;
|
;
|
||||||
//# sourceMappingURL=calendar-appointments-conflict.js.map?v=803bcfae8888a9a6164c
|
//# sourceMappingURL=calendar-appointments-conflict.js.map?v=84cfe3eb419f8e079c5a
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -500,4 +500,4 @@ if(false) {}
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-dashboard-lazy.js.map?v=b6406f1ce7e581fd25b6
|
//# sourceMappingURL=calendar-dashboard-lazy.js.map?v=a51e4becd0c10f90296c
|
||||||
File diff suppressed because one or more lines are too long
@ -1322,7 +1322,7 @@ function b(n) {
|
|||||||
/******/ // This function allow to reference async chunks
|
/******/ // This function allow to reference async chunks
|
||||||
/******/ __webpack_require__.u = (chunkId) => {
|
/******/ __webpack_require__.u = (chunkId) => {
|
||||||
/******/ // return url for filenames based on template
|
/******/ // return url for filenames based on template
|
||||||
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"bdd28dbe55827e26cea9","vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"8bef6f975133a8c4edd8","vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d":"f0bb6d2e2475fb1d8ec6","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"8e84597c896740c03d6c","src_store_index_js":"0998d8f0e8c86a67311f","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"d8540d9b2a367cfc9993","dashboard-lazy":"b6406f1ce7e581fd25b6","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"28880218870abee4b857","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"1f92a9e046dd68952989","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
|
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"31a7d4ece3cdde2d67f1","vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"55e669bcb78e07cd54cc","vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d":"56b7e44c1982f74f69ca","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"7cf71b4f92d5bbc180b4","src_store_index_js":"c14c1012a0469c027742","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"7910aecb675dcdfa620c","dashboard-lazy":"a51e4becd0c10f90296c","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"1ec24b5ef07652c6dd39","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"7ec0cf6b65f5c745fa03","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
|
||||||
/******/ };
|
/******/ };
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
@ -1411,7 +1411,7 @@ function b(n) {
|
|||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/publicPath */
|
/******/ /* webpack/runtime/publicPath */
|
||||||
/******/ (() => {
|
/******/ (() => {
|
||||||
/******/ __webpack_require__.p = "/apps/calendar/js/";
|
/******/ __webpack_require__.p = "\\apps\\calendar\\js\\";
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/jsonp chunk loading */
|
/******/ /* webpack/runtime/jsonp chunk loading */
|
||||||
@ -1580,4 +1580,4 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
|
|
||||||
/******/ })()
|
/******/ })()
|
||||||
;
|
;
|
||||||
//# sourceMappingURL=calendar-dashboard.js.map?v=f780280c831f3f7049ed
|
//# sourceMappingURL=calendar-dashboard.js.map?v=49f5e18ccfb495936d13
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -369,4 +369,4 @@ module.exports = /*#__PURE__*/JSON.parse('[{"country":"Algeria","filename":"Alge
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-public-calendar-subscription-picker.js.map?v=28b92f22b2082a11ff97
|
//# sourceMappingURL=calendar-public-calendar-subscription-picker.js.map?v=2315e24e67ebf6e4b6db
|
||||||
File diff suppressed because one or more lines are too long
@ -2775,6 +2775,21 @@ ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8";
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pending-event {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pending-event::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
background: rgb(23, 23, 23);
|
||||||
|
transform: scaleY(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calendar App
|
* Calendar App
|
||||||
*
|
*
|
||||||
@ -8865,7 +8880,7 @@ window._registerCustomPickerElement = _;
|
|||||||
/******/ // This function allow to reference async chunks
|
/******/ // This function allow to reference async chunks
|
||||||
/******/ __webpack_require__.u = (chunkId) => {
|
/******/ __webpack_require__.u = (chunkId) => {
|
||||||
/******/ // return url for filenames based on template
|
/******/ // return url for filenames based on template
|
||||||
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"bdd28dbe55827e26cea9","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"28880218870abee4b857","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"8bef6f975133a8c4edd8","vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5":"99f11830ab88b8e43c46","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"8e84597c896740c03d6c","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"d8540d9b2a367cfc9993","src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254":"0c8bf313c8f88a9c37dc","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","src_store_index_js":"0998d8f0e8c86a67311f","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"1f92a9e046dd68952989","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","public-calendar-subscription-picker":"28b92f22b2082a11ff97","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
|
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"31a7d4ece3cdde2d67f1","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"1ec24b5ef07652c6dd39","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"55e669bcb78e07cd54cc","vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5":"7212b31e059bc10c256e","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"7cf71b4f92d5bbc180b4","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"7910aecb675dcdfa620c","src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254":"cb7912c432f0c01a7af2","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","src_store_index_js":"c14c1012a0469c027742","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"7ec0cf6b65f5c745fa03","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","public-calendar-subscription-picker":"2315e24e67ebf6e4b6db","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
|
||||||
/******/ };
|
/******/ };
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
@ -8954,7 +8969,7 @@ window._registerCustomPickerElement = _;
|
|||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/publicPath */
|
/******/ /* webpack/runtime/publicPath */
|
||||||
/******/ (() => {
|
/******/ (() => {
|
||||||
/******/ __webpack_require__.p = "/apps/calendar/js/";
|
/******/ __webpack_require__.p = "\\apps\\calendar\\js\\";
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/jsonp chunk loading */
|
/******/ /* webpack/runtime/jsonp chunk loading */
|
||||||
@ -9115,4 +9130,4 @@ __webpack_require__.p = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.linkTo
|
|||||||
|
|
||||||
/******/ })()
|
/******/ })()
|
||||||
;
|
;
|
||||||
//# sourceMappingURL=calendar-reference.js.map?v=073a53f96df3b4d5b009
|
//# sourceMappingURL=calendar-reference.js.map?v=7d7310f038ef0528d222
|
||||||
File diff suppressed because one or more lines are too long
@ -123,6 +123,11 @@ function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
|
|||||||
title += " (".concat(object.percent, "%)");
|
title += " (".concat(object.percent, "%)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let isCalendarPending = false;
|
||||||
|
let objectProperties = object._properties.get('ISCALENDARPENDING');
|
||||||
|
if (objectProperties && objectProperties.length > 0) {
|
||||||
|
isCalendarPending = objectProperties[0]._value == "1" ? true : false;
|
||||||
|
}
|
||||||
const fcEvent = {
|
const fcEvent = {
|
||||||
id: [calendarObject.id, object.id].join('###'),
|
id: [calendarObject.id, object.id].join('###'),
|
||||||
title,
|
title,
|
||||||
@ -144,9 +149,15 @@ function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
|
|||||||
percent: object.percent || null,
|
percent: object.percent || null,
|
||||||
davUrl: calendarObject.dav.url,
|
davUrl: calendarObject.dav.url,
|
||||||
location: object.location,
|
location: object.location,
|
||||||
description: object.description
|
description: object.description,
|
||||||
|
isCalendarPending: isCalendarPending
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
if (isCalendarPending) {
|
||||||
|
fcEvent.backgroundColor = calendar.color;
|
||||||
|
fcEvent.borderColor = calendar.color;
|
||||||
|
fcEvent.textColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.generateTextColorForHex)(calendar.color);
|
||||||
|
}
|
||||||
if (object.color) {
|
if (object.color) {
|
||||||
const customColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.getHexForColorName)(object.color);
|
const customColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.getHexForColorName)(object.color);
|
||||||
if (customColor) {
|
if (customColor) {
|
||||||
@ -1032,4 +1043,4 @@ module.exports = "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/sv
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258.js.map?v=d8540d9b2a367cfc9993
|
//# sourceMappingURL=calendar-src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258.js.map?v=7910aecb675dcdfa620c
|
||||||
File diff suppressed because one or more lines are too long
@ -1826,4 +1826,4 @@ function GenColors(steps) {
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790.js.map?v=8e84597c896740c03d6c
|
//# sourceMappingURL=calendar-src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790.js.map?v=7cf71b4f92d5bbc180b4
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -4331,7 +4331,9 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
...(0,_fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_9__.getFullCalendarLocale)(),
|
...(0,_fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_9__.getFullCalendarLocale)(),
|
||||||
// Rendering
|
// Rendering
|
||||||
dayHeaderDidMount: _fullcalendar_rendering_dayHeaderDidMount_js__WEBPACK_IMPORTED_MODULE_11__["default"],
|
dayHeaderDidMount: _fullcalendar_rendering_dayHeaderDidMount_js__WEBPACK_IMPORTED_MODULE_11__["default"],
|
||||||
eventDidMount: _fullcalendar_rendering_eventDidMount_js__WEBPACK_IMPORTED_MODULE_12__["default"],
|
eventDidMount: info => {
|
||||||
|
this.addPendinEventClass(info);
|
||||||
|
},
|
||||||
noEventsDidMount: _fullcalendar_rendering_noEventsDidMount_js__WEBPACK_IMPORTED_MODULE_14__["default"],
|
noEventsDidMount: _fullcalendar_rendering_noEventsDidMount_js__WEBPACK_IMPORTED_MODULE_14__["default"],
|
||||||
eventOrder: ['start', '-duration', 'allDay', _fullcalendar_rendering_eventOrder_js__WEBPACK_IMPORTED_MODULE_13__["default"]],
|
eventOrder: ['start', '-duration', 'allDay', _fullcalendar_rendering_eventOrder_js__WEBPACK_IMPORTED_MODULE_13__["default"]],
|
||||||
forceEventDuration: false,
|
forceEventDuration: false,
|
||||||
@ -4350,7 +4352,14 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
// Timezones:
|
// Timezones:
|
||||||
timeZone: this.timezoneId,
|
timeZone: this.timezoneId,
|
||||||
// Disable jumping in week view and day view when clicking on any event using the simple editor
|
// Disable jumping in week view and day view when clicking on any event using the simple editor
|
||||||
scrollTimeReset: false
|
scrollTimeReset: false,
|
||||||
|
eventClassNames: arg => {
|
||||||
|
let classes = [];
|
||||||
|
if (arg.event.extendedProps.isCalendarPending) {
|
||||||
|
classes.push('pending-event');
|
||||||
|
}
|
||||||
|
return classes;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
eventSources() {
|
eventSources() {
|
||||||
@ -4476,7 +4485,13 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
initialView
|
initialView
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, 5000)
|
}, 5000),
|
||||||
|
addPendinEventClass(info) {
|
||||||
|
if (info.event.extendedProps.isCalendarPending) {
|
||||||
|
info.el.style.backgroundColor = info.event.backgroundColor;
|
||||||
|
info.el.style.color = info.event.textColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -5925,6 +5940,41 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js":
|
||||||
|
/*!****************************************************************************************************************************************************************************************************!*\
|
||||||
|
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js ***!
|
||||||
|
\****************************************************************************************************************************************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
||||||
|
/* harmony export */ });
|
||||||
|
/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs");
|
||||||
|
|
||||||
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
||||||
|
name: "PropertyIsCalendarPending",
|
||||||
|
components: {
|
||||||
|
NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
isCalendarPending: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {},
|
||||||
|
methods: {
|
||||||
|
toggleIsCalendarPending() {
|
||||||
|
const newIsCalendarPendingState = !this.isCalendarPending;
|
||||||
|
this.$emit('toggle-is-calendar-pending', newIsCalendarPendingState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js":
|
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js":
|
||||||
/*!******************************************************************************************************************************************************************************************!*\
|
/*!******************************************************************************************************************************************************************************************!*\
|
||||||
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js ***!
|
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js ***!
|
||||||
@ -5939,7 +5989,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs");
|
/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs");
|
||||||
|
|
||||||
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
||||||
name: "CheckboxComponent",
|
name: "PropertyIsLeave",
|
||||||
components: {
|
components: {
|
||||||
NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch
|
NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch
|
||||||
},
|
},
|
||||||
@ -7102,6 +7152,10 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
isCalendarPending: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -7122,6 +7176,9 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
saveThisOnly() {
|
saveThisOnly() {
|
||||||
this.$emit('save-this-only');
|
this.$emit('save-this-only');
|
||||||
},
|
},
|
||||||
|
saveAsPendingCalendarEvent() {
|
||||||
|
this.$emit('save-pending-calendar-event');
|
||||||
|
},
|
||||||
saveThisAndAllFuture() {
|
saveThisAndAllFuture() {
|
||||||
this.$emit('save-this-and-all-future');
|
this.$emit('save-this-and-all-future');
|
||||||
},
|
},
|
||||||
@ -8059,7 +8116,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
/* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue");
|
/* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue");
|
||||||
/* harmony import */ var vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vue-material-design-icons/ContentDuplicate.vue */ "./node_modules/vue-material-design-icons/ContentDuplicate.vue");
|
/* harmony import */ var vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vue-material-design-icons/ContentDuplicate.vue */ "./node_modules/vue-material-design-icons/ContentDuplicate.vue");
|
||||||
/* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue");
|
/* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue");
|
||||||
/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js");
|
/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js");
|
||||||
/* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs");
|
/* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs");
|
||||||
/* harmony import */ var _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue");
|
/* harmony import */ var _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue");
|
||||||
/* harmony import */ var _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjax.vue */ "./src/components/Editor/Properties/PropertySelectAjax.vue");
|
/* harmony import */ var _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjax.vue */ "./src/components/Editor/Properties/PropertySelectAjax.vue");
|
||||||
@ -8068,6 +8125,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
/* harmony import */ var _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectClient.vue */ "./src/components/Editor/Properties/PropertySelectClient.vue");
|
/* harmony import */ var _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectClient.vue */ "./src/components/Editor/Properties/PropertySelectClient.vue");
|
||||||
/* harmony import */ var _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectArticle.vue */ "./src/components/Editor/Properties/PropertySelectArticle.vue");
|
/* harmony import */ var _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectArticle.vue */ "./src/components/Editor/Properties/PropertySelectArticle.vue");
|
||||||
/* harmony import */ var _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsLeave.vue */ "./src/components/Editor/Properties/PropertyIsLeave.vue");
|
/* harmony import */ var _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsLeave.vue */ "./src/components/Editor/Properties/PropertyIsLeave.vue");
|
||||||
|
/* harmony import */ var _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsCalendarPending */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -8097,9 +8156,10 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
|
|
||||||
|
|
||||||
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
||||||
name: 'EditSimple',
|
name: "EditSimple",
|
||||||
components: {
|
components: {
|
||||||
PropertyIsLeave: _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__["default"],
|
PropertyIsLeave: _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__["default"],
|
||||||
|
PropertyIsCalendarPending: _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_27__["default"],
|
||||||
PropertySelectAjaxMultiple: _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_22__["default"],
|
PropertySelectAjaxMultiple: _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_22__["default"],
|
||||||
PropertySelectAjax: _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__["default"],
|
PropertySelectAjax: _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__["default"],
|
||||||
PropertySelectLieu: _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_23__["default"],
|
PropertySelectLieu: _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_23__["default"],
|
||||||
@ -8130,9 +8190,10 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
mixins: [_mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_3__["default"]],
|
mixins: [_mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_3__["default"]],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
placement: 'auto',
|
placement: "auto",
|
||||||
hasLocation: false,
|
hasLocation: false,
|
||||||
hasDescription: false,
|
hasDescription: false,
|
||||||
|
isCalendarPending: false,
|
||||||
boundaryElement: null,
|
boundaryElement: null,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isViewing: true,
|
isViewing: true,
|
||||||
@ -8140,7 +8201,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...(0,vuex__WEBPACK_IMPORTED_MODULE_27__.mapState)({
|
...(0,vuex__WEBPACK_IMPORTED_MODULE_28__.mapState)({
|
||||||
hideEventExport: state => state.settings.hideEventExport,
|
hideEventExport: state => state.settings.hideEventExport,
|
||||||
widgetEventDetailsOpen: state => state.calendars.widgetEventDetailsOpen,
|
widgetEventDetailsOpen: state => state.calendars.widgetEventDetailsOpen,
|
||||||
widgetEventDetails: state => state.calendars.widgetEventDetails,
|
widgetEventDetails: state => state.calendars.widgetEventDetails,
|
||||||
@ -8163,8 +8224,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {string}
|
* @return {string}
|
||||||
*/
|
*/
|
||||||
titleOrPlaceholder() {
|
titleOrPlaceholder() {
|
||||||
if (this.title === '' && this.isReadOnlyOrViewing && !this.isLoading) {
|
if (this.title === "" && this.isReadOnlyOrViewing && !this.isLoading) {
|
||||||
return t('calendar', 'Untitled event');
|
return t("calendar", "Untitled event");
|
||||||
}
|
}
|
||||||
return this.title;
|
return this.title;
|
||||||
}
|
}
|
||||||
@ -8179,14 +8240,16 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
calendarObjectInstance() {
|
calendarObjectInstance() {
|
||||||
this.hasLocation = false;
|
this.hasLocation = false;
|
||||||
this.hasDescription = false;
|
this.hasDescription = false;
|
||||||
if (typeof this.calendarObjectInstance.location === 'string' && this.calendarObjectInstance.location.trim() !== '') {
|
if (typeof this.calendarObjectInstance.location === "string" && this.calendarObjectInstance.location.trim() !== "") {
|
||||||
this.hasLocation = true;
|
this.hasLocation = true;
|
||||||
}
|
}
|
||||||
if (typeof this.calendarObjectInstance.description === 'string' && this.calendarObjectInstance.description.trim() !== '') {
|
if (typeof this.calendarObjectInstance.description === "string" && this.calendarObjectInstance.description.trim() !== "") {
|
||||||
this.hasDescription = true;
|
this.hasDescription = true;
|
||||||
}
|
}
|
||||||
if (this.calendarObjectInstance) {
|
if (this.calendarObjectInstance) {
|
||||||
|
var _this$calendarObjectI;
|
||||||
this.getDefuntUrl();
|
this.getDefuntUrl();
|
||||||
|
this.isCalendarPending = (_this$calendarObjectI = this.calendarObjectInstance.isCalendarPending) !== null && _this$calendarObjectI !== void 0 ? _this$calendarObjectI : false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
isNew: {
|
isNew: {
|
||||||
@ -8201,27 +8264,27 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
if (this.isWidget) {
|
if (this.isWidget) {
|
||||||
const objectId = this.widgetEventDetails.object;
|
const objectId = this.widgetEventDetails.object;
|
||||||
const recurrenceId = this.widgetEventDetails.recurrenceId;
|
const recurrenceId = this.widgetEventDetails.recurrenceId;
|
||||||
await this.$store.dispatch('getCalendarObjectInstanceByObjectIdAndRecurrenceId', {
|
await this.$store.dispatch("getCalendarObjectInstanceByObjectIdAndRecurrenceId", {
|
||||||
objectId,
|
objectId,
|
||||||
recurrenceId
|
recurrenceId
|
||||||
});
|
});
|
||||||
this.calendarId = this.calendarObject.calendarId;
|
this.calendarId = this.calendarObject.calendarId;
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
}
|
}
|
||||||
this.boundaryElement = this.isWidget ? document.querySelector('.fc') : document.querySelector('#app-content-vue > .fc');
|
this.boundaryElement = this.isWidget ? document.querySelector(".fc") : document.querySelector("#app-content-vue > .fc");
|
||||||
window.addEventListener('keydown', this.keyboardCloseEditor);
|
window.addEventListener("keydown", this.keyboardCloseEditor);
|
||||||
window.addEventListener('keydown', this.keyboardSaveEvent);
|
window.addEventListener("keydown", this.keyboardSaveEvent);
|
||||||
window.addEventListener('keydown', this.keyboardDeleteEvent);
|
window.addEventListener("keydown", this.keyboardDeleteEvent);
|
||||||
window.addEventListener('keydown', this.keyboardDuplicateEvent);
|
window.addEventListener("keydown", this.keyboardDuplicateEvent);
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.repositionPopover();
|
this.repositionPopover();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
window.removeEventListener('keydown', this.keyboardCloseEditor);
|
window.removeEventListener("keydown", this.keyboardCloseEditor);
|
||||||
window.removeEventListener('keydown', this.keyboardSaveEvent);
|
window.removeEventListener("keydown", this.keyboardSaveEvent);
|
||||||
window.removeEventListener('keydown', this.keyboardDeleteEvent);
|
window.removeEventListener("keydown", this.keyboardDeleteEvent);
|
||||||
window.removeEventListener('keydown', this.keyboardDuplicateEvent);
|
window.removeEventListener("keydown", this.keyboardDuplicateEvent);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showMore() {
|
showMore() {
|
||||||
@ -8230,12 +8293,12 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
const params = Object.assign({}, this.$route.params);
|
const params = Object.assign({}, this.$route.params);
|
||||||
if (this.isNew) {
|
if (this.isNew) {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: 'NewSidebarView',
|
name: "NewSidebarView",
|
||||||
params
|
params
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_9__.getPrefixedRoute)(this.$route.name, 'EditSidebarView'),
|
name: (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_9__.getPrefixedRoute)(this.$route.name, "EditSidebarView"),
|
||||||
params
|
params
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -8246,10 +8309,10 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
const objectId = this.widgetEventDetails.object;
|
const objectId = this.widgetEventDetails.object;
|
||||||
const recurrenceId = this.widgetEventDetails.recurrenceId;
|
const recurrenceId = this.widgetEventDetails.recurrenceId;
|
||||||
matchingDomObject = this.widgetRef.querySelector(".fc-event[data-object-id=\"".concat(objectId, "\"][data-recurrence-id=\"").concat(recurrenceId, "\"]"));
|
matchingDomObject = this.widgetRef.querySelector(".fc-event[data-object-id=\"".concat(objectId, "\"][data-recurrence-id=\"").concat(recurrenceId, "\"]"));
|
||||||
this.placement = 'auto';
|
this.placement = "auto";
|
||||||
} else if (isNew) {
|
} else if (isNew) {
|
||||||
matchingDomObject = document.querySelector('.fc-highlight');
|
matchingDomObject = document.querySelector(".fc-highlight");
|
||||||
this.placement = 'auto';
|
this.placement = "auto";
|
||||||
if (!matchingDomObject) {
|
if (!matchingDomObject) {
|
||||||
matchingDomObject = document.querySelector('.fc-event[data-is-new="yes"]');
|
matchingDomObject = document.querySelector('.fc-event[data-is-new="yes"]');
|
||||||
}
|
}
|
||||||
@ -8257,21 +8320,21 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
const objectId = route.params.object;
|
const objectId = route.params.object;
|
||||||
const recurrenceId = route.params.recurrenceId;
|
const recurrenceId = route.params.recurrenceId;
|
||||||
matchingDomObject = document.querySelector(".fc-event[data-object-id=\"".concat(objectId, "\"][data-recurrence-id=\"").concat(recurrenceId, "\"]"));
|
matchingDomObject = document.querySelector(".fc-event[data-object-id=\"".concat(objectId, "\"][data-recurrence-id=\"").concat(recurrenceId, "\"]"));
|
||||||
this.placement = 'auto';
|
this.placement = "auto";
|
||||||
}
|
}
|
||||||
if (!matchingDomObject) {
|
if (!matchingDomObject) {
|
||||||
matchingDomObject = document.querySelector('#app-navigation-vue');
|
matchingDomObject = document.querySelector("#app-navigation-vue");
|
||||||
this.placement = 'right';
|
this.placement = "right";
|
||||||
}
|
}
|
||||||
if (!matchingDomObject) {
|
if (!matchingDomObject) {
|
||||||
matchingDomObject = document.querySelector('body');
|
matchingDomObject = document.querySelector("body");
|
||||||
this.placement = 'auto';
|
this.placement = "auto";
|
||||||
}
|
}
|
||||||
console.info('getDomElementForPopover', matchingDomObject, this.placement);
|
console.info("getDomElementForPopover", matchingDomObject, this.placement);
|
||||||
return matchingDomObject;
|
return matchingDomObject;
|
||||||
},
|
},
|
||||||
repositionPopover() {
|
repositionPopover() {
|
||||||
const isNew = this.isWidget ? false : this.$route.name === 'NewPopoverView';
|
const isNew = this.isWidget ? false : this.$route.name === "NewPopoverView";
|
||||||
this.$refs.popover.$children[0].$refs.reference = this.getDomElementForPopover(isNew, this.$route);
|
this.$refs.popover.$children[0].$refs.reference = this.getDomElementForPopover(isNew, this.$route);
|
||||||
this.$refs.popover.$children[0].$refs.popper.dispose();
|
this.$refs.popover.$children[0].$refs.popper.dispose();
|
||||||
this.$refs.popover.$children[0].$refs.popper.init();
|
this.$refs.popover.$children[0].$refs.popper.init();
|
||||||
@ -8297,6 +8360,19 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
this.isViewing = false;
|
this.isViewing = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async saveAsPendingCalendarEvent() {
|
||||||
|
if (this.isNew) {
|
||||||
|
await this.savePendingCalendar(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.isViewing = true;
|
||||||
|
try {
|
||||||
|
await this.savePendingCalendar(false);
|
||||||
|
this.requiresActionOnRouteLeave = false;
|
||||||
|
} catch (error) {
|
||||||
|
this.isViewing = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
addArticle(article) {
|
addArticle(article) {
|
||||||
if (this.description && this.description !== "") {
|
if (this.description && this.description !== "") {
|
||||||
this.updateDescription(this.description + ";" + article);
|
this.updateDescription(this.description + ";" + article);
|
||||||
@ -8307,7 +8383,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
removeArticle(article) {
|
removeArticle(article) {
|
||||||
if (this.description && this.description !== "") {
|
if (this.description && this.description !== "") {
|
||||||
let values = [];
|
let values = [];
|
||||||
let items = this.description.split(';');
|
let items = this.description.split(";");
|
||||||
items.forEach(item => {
|
items.forEach(item => {
|
||||||
if (item !== article) {
|
if (item !== article) {
|
||||||
values.push(item);
|
values.push(item);
|
||||||
@ -8328,7 +8404,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
viewDefunt() {
|
viewDefunt() {
|
||||||
window.open(this.defuntUrl, '_blank');
|
window.open(this.defuntUrl, "_blank");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -12809,6 +12885,40 @@ var staticRenderFns = [];
|
|||||||
render._withStripped = true;
|
render._withStripped = true;
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true":
|
||||||
|
/*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||||
|
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true ***!
|
||||||
|
\***************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ render: () => (/* binding */ render),
|
||||||
|
/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)
|
||||||
|
/* harmony export */ });
|
||||||
|
var render = function render() {
|
||||||
|
var _vm = this,
|
||||||
|
_c = _vm._self._c;
|
||||||
|
return !_vm.isReadOnly ? _c("div", {
|
||||||
|
staticClass: "property-title-time-picker"
|
||||||
|
}, [_c("div", {
|
||||||
|
staticClass: "property-title-time-picker__all-day"
|
||||||
|
}, [_c("NcCheckboxRadioSwitch", {
|
||||||
|
attrs: {
|
||||||
|
checked: _vm.isCalendarPending
|
||||||
|
},
|
||||||
|
on: {
|
||||||
|
"update:checked": _vm.toggleIsCalendarPending
|
||||||
|
}
|
||||||
|
}, [_vm._v("\n\t\t\tEn attente\n\t\t")])], 1)]) : _vm._e();
|
||||||
|
};
|
||||||
|
var staticRenderFns = [];
|
||||||
|
render._withStripped = true;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true":
|
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true":
|
||||||
@ -13681,7 +13791,12 @@ var render = function render() {
|
|||||||
class: {
|
class: {
|
||||||
"save-buttons--grow": _vm.growHorizontally
|
"save-buttons--grow": _vm.growHorizontally
|
||||||
}
|
}
|
||||||
}, [_vm.showMoreButton ? _c("NcButton", {
|
}, [!_vm.isCalendarPending && !_vm.isReadOnly ? _c("NcButton", {
|
||||||
|
class: "d-flex w-max-content",
|
||||||
|
on: {
|
||||||
|
click: _vm.saveAsPendingCalendarEvent
|
||||||
|
}
|
||||||
|
}, [_vm._v("\n\t\tMettre en attente\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showMoreButton ? _c("NcButton", {
|
||||||
attrs: {
|
attrs: {
|
||||||
type: _vm.moreButtonType,
|
type: _vm.moreButtonType,
|
||||||
disabled: _vm.disabled
|
disabled: _vm.disabled
|
||||||
@ -14496,7 +14611,8 @@ var render = function render() {
|
|||||||
"show-more-button": true,
|
"show-more-button": true,
|
||||||
"more-button-type": _vm.isViewing ? "tertiary" : undefined,
|
"more-button-type": _vm.isViewing ? "tertiary" : undefined,
|
||||||
"grow-horizontally": !_vm.isViewing && _vm.canCreateRecurrenceException,
|
"grow-horizontally": !_vm.isViewing && _vm.canCreateRecurrenceException,
|
||||||
disabled: _vm.isSaving
|
disabled: _vm.isSaving,
|
||||||
|
"is-calendar-pending": _vm.isCalendarPending
|
||||||
},
|
},
|
||||||
on: {
|
on: {
|
||||||
"save-this-only": function ($event) {
|
"save-this-only": function ($event) {
|
||||||
@ -14505,7 +14621,8 @@ var render = function render() {
|
|||||||
"save-this-and-all-future": function ($event) {
|
"save-this-and-all-future": function ($event) {
|
||||||
return _vm.saveAndView(true);
|
return _vm.saveAndView(true);
|
||||||
},
|
},
|
||||||
"show-more": _vm.showMore
|
"show-more": _vm.showMore,
|
||||||
|
"save-pending-calendar-event": _vm.saveAsPendingCalendarEvent
|
||||||
}
|
}
|
||||||
}, [_vm.defuntUrl ? _c("NcButton", {
|
}, [_vm.defuntUrl ? _c("NcButton", {
|
||||||
class: "d-flex w-max-content",
|
class: "d-flex w-max-content",
|
||||||
@ -16996,7 +17113,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
return (_this$calendarObjectI8 = (_this$calendarObjectI9 = this.calendarObjectInstance) === null || _this$calendarObjectI9 === void 0 ? void 0 : _this$calendarObjectI9.embalmer) !== null && _this$calendarObjectI8 !== void 0 ? _this$calendarObjectI8 : null;
|
return (_this$calendarObjectI8 = (_this$calendarObjectI9 = this.calendarObjectInstance) === null || _this$calendarObjectI9 === void 0 ? void 0 : _this$calendarObjectI9.embalmer) !== null && _this$calendarObjectI8 !== void 0 ? _this$calendarObjectI8 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the embalmer(Thanato) or null if the event is still loading
|
* Returns the isleave property
|
||||||
*
|
*
|
||||||
* @return {string|null}
|
* @return {string|null}
|
||||||
*/
|
*/
|
||||||
@ -17004,14 +17121,23 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
var _this$calendarObjectI10, _this$calendarObjectI11;
|
var _this$calendarObjectI10, _this$calendarObjectI11;
|
||||||
return (_this$calendarObjectI10 = (_this$calendarObjectI11 = this.calendarObjectInstance) === null || _this$calendarObjectI11 === void 0 ? void 0 : _this$calendarObjectI11.isLeave) !== null && _this$calendarObjectI10 !== void 0 ? _this$calendarObjectI10 : false;
|
return (_this$calendarObjectI10 = (_this$calendarObjectI11 = this.calendarObjectInstance) === null || _this$calendarObjectI11 === void 0 ? void 0 : _this$calendarObjectI11.isLeave) !== null && _this$calendarObjectI10 !== void 0 ? _this$calendarObjectI10 : false;
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Returns the iscalendarpending property
|
||||||
|
*
|
||||||
|
* @return {string|null}
|
||||||
|
*/
|
||||||
|
isCalendarPending() {
|
||||||
|
var _this$calendarObjectI12, _this$calendarObjectI13;
|
||||||
|
return (_this$calendarObjectI12 = (_this$calendarObjectI13 = this.calendarObjectInstance) === null || _this$calendarObjectI13 === void 0 ? void 0 : _this$calendarObjectI13.isCalendarPending) !== null && _this$calendarObjectI12 !== void 0 ? _this$calendarObjectI12 : false;
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the comment or null if the event is still loading
|
* Returns the comment or null if the event is still loading
|
||||||
*
|
*
|
||||||
* @return {string|null}
|
* @return {string|null}
|
||||||
*/
|
*/
|
||||||
comment() {
|
comment() {
|
||||||
var _this$calendarObjectI12, _this$calendarObjectI13;
|
var _this$calendarObjectI14, _this$calendarObjectI15;
|
||||||
return (_this$calendarObjectI12 = (_this$calendarObjectI13 = this.calendarObjectInstance) === null || _this$calendarObjectI13 === void 0 ? void 0 : _this$calendarObjectI13.comment) !== null && _this$calendarObjectI12 !== void 0 ? _this$calendarObjectI12 : null;
|
return (_this$calendarObjectI14 = (_this$calendarObjectI15 = this.calendarObjectInstance) === null || _this$calendarObjectI15 === void 0 ? void 0 : _this$calendarObjectI15.comment) !== null && _this$calendarObjectI14 !== void 0 ? _this$calendarObjectI14 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the description or null if the event is still loading
|
* Returns the description or null if the event is still loading
|
||||||
@ -17019,8 +17145,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {string|null}
|
* @return {string|null}
|
||||||
*/
|
*/
|
||||||
description() {
|
description() {
|
||||||
var _this$calendarObjectI14, _this$calendarObjectI15;
|
var _this$calendarObjectI16, _this$calendarObjectI17;
|
||||||
return (_this$calendarObjectI14 = (_this$calendarObjectI15 = this.calendarObjectInstance) === null || _this$calendarObjectI15 === void 0 ? void 0 : _this$calendarObjectI15.description) !== null && _this$calendarObjectI14 !== void 0 ? _this$calendarObjectI14 : null;
|
return (_this$calendarObjectI16 = (_this$calendarObjectI17 = this.calendarObjectInstance) === null || _this$calendarObjectI17 === void 0 ? void 0 : _this$calendarObjectI17.description) !== null && _this$calendarObjectI16 !== void 0 ? _this$calendarObjectI16 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the start-date (without timezone) or null if the event is still loading
|
* Returns the start-date (without timezone) or null if the event is still loading
|
||||||
@ -17028,8 +17154,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {Date|null}
|
* @return {Date|null}
|
||||||
*/
|
*/
|
||||||
startDate() {
|
startDate() {
|
||||||
var _this$calendarObjectI16, _this$calendarObjectI17;
|
var _this$calendarObjectI18, _this$calendarObjectI19;
|
||||||
return (_this$calendarObjectI16 = (_this$calendarObjectI17 = this.calendarObjectInstance) === null || _this$calendarObjectI17 === void 0 ? void 0 : _this$calendarObjectI17.startDate) !== null && _this$calendarObjectI16 !== void 0 ? _this$calendarObjectI16 : null;
|
return (_this$calendarObjectI18 = (_this$calendarObjectI19 = this.calendarObjectInstance) === null || _this$calendarObjectI19 === void 0 ? void 0 : _this$calendarObjectI19.startDate) !== null && _this$calendarObjectI18 !== void 0 ? _this$calendarObjectI18 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the timezone of the event's start-date or null if the event is still loading
|
* Returns the timezone of the event's start-date or null if the event is still loading
|
||||||
@ -17037,8 +17163,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {string|null}
|
* @return {string|null}
|
||||||
*/
|
*/
|
||||||
startTimezone() {
|
startTimezone() {
|
||||||
var _this$calendarObjectI18, _this$calendarObjectI19;
|
var _this$calendarObjectI20, _this$calendarObjectI21;
|
||||||
return (_this$calendarObjectI18 = (_this$calendarObjectI19 = this.calendarObjectInstance) === null || _this$calendarObjectI19 === void 0 ? void 0 : _this$calendarObjectI19.startTimezoneId) !== null && _this$calendarObjectI18 !== void 0 ? _this$calendarObjectI18 : null;
|
return (_this$calendarObjectI20 = (_this$calendarObjectI21 = this.calendarObjectInstance) === null || _this$calendarObjectI21 === void 0 ? void 0 : _this$calendarObjectI21.startTimezoneId) !== null && _this$calendarObjectI20 !== void 0 ? _this$calendarObjectI20 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the end-date (without timezone) or null if the event is still loading
|
* Returns the end-date (without timezone) or null if the event is still loading
|
||||||
@ -17046,8 +17172,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {Date|null}
|
* @return {Date|null}
|
||||||
*/
|
*/
|
||||||
endDate() {
|
endDate() {
|
||||||
var _this$calendarObjectI20, _this$calendarObjectI21;
|
var _this$calendarObjectI22, _this$calendarObjectI23;
|
||||||
return (_this$calendarObjectI20 = (_this$calendarObjectI21 = this.calendarObjectInstance) === null || _this$calendarObjectI21 === void 0 ? void 0 : _this$calendarObjectI21.endDate) !== null && _this$calendarObjectI20 !== void 0 ? _this$calendarObjectI20 : null;
|
return (_this$calendarObjectI22 = (_this$calendarObjectI23 = this.calendarObjectInstance) === null || _this$calendarObjectI23 === void 0 ? void 0 : _this$calendarObjectI23.endDate) !== null && _this$calendarObjectI22 !== void 0 ? _this$calendarObjectI22 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the timezone of the event's end-date or null if the event is still loading
|
* Returns the timezone of the event's end-date or null if the event is still loading
|
||||||
@ -17055,8 +17181,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {string|null}
|
* @return {string|null}
|
||||||
*/
|
*/
|
||||||
endTimezone() {
|
endTimezone() {
|
||||||
var _this$calendarObjectI22, _this$calendarObjectI23;
|
var _this$calendarObjectI24, _this$calendarObjectI25;
|
||||||
return (_this$calendarObjectI22 = (_this$calendarObjectI23 = this.calendarObjectInstance) === null || _this$calendarObjectI23 === void 0 ? void 0 : _this$calendarObjectI23.endTimezoneId) !== null && _this$calendarObjectI22 !== void 0 ? _this$calendarObjectI22 : null;
|
return (_this$calendarObjectI24 = (_this$calendarObjectI25 = this.calendarObjectInstance) === null || _this$calendarObjectI25 === void 0 ? void 0 : _this$calendarObjectI25.endTimezoneId) !== null && _this$calendarObjectI24 !== void 0 ? _this$calendarObjectI24 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns whether or not the event is all-day or null if the event is still loading
|
* Returns whether or not the event is all-day or null if the event is still loading
|
||||||
@ -17064,8 +17190,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
isAllDay() {
|
isAllDay() {
|
||||||
var _this$calendarObjectI24, _this$calendarObjectI25;
|
var _this$calendarObjectI26, _this$calendarObjectI27;
|
||||||
return (_this$calendarObjectI24 = (_this$calendarObjectI25 = this.calendarObjectInstance) === null || _this$calendarObjectI25 === void 0 ? void 0 : _this$calendarObjectI25.isAllDay) !== null && _this$calendarObjectI24 !== void 0 ? _this$calendarObjectI24 : false;
|
return (_this$calendarObjectI26 = (_this$calendarObjectI27 = this.calendarObjectInstance) === null || _this$calendarObjectI27 === void 0 ? void 0 : _this$calendarObjectI27.isAllDay) !== null && _this$calendarObjectI26 !== void 0 ? _this$calendarObjectI26 : false;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns whether or not the event is a leave
|
* Returns whether or not the event is a leave
|
||||||
@ -17073,8 +17199,17 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
isLeave() {
|
isLeave() {
|
||||||
var _this$calendarObjectI26, _this$calendarObjectI27;
|
var _this$calendarObjectI28, _this$calendarObjectI29;
|
||||||
return (_this$calendarObjectI26 = (_this$calendarObjectI27 = this.calendarObjectInstance) === null || _this$calendarObjectI27 === void 0 ? void 0 : _this$calendarObjectI27.isLeave) !== null && _this$calendarObjectI26 !== void 0 ? _this$calendarObjectI26 : false;
|
return (_this$calendarObjectI28 = (_this$calendarObjectI29 = this.calendarObjectInstance) === null || _this$calendarObjectI29 === void 0 ? void 0 : _this$calendarObjectI29.isLeave) !== null && _this$calendarObjectI28 !== void 0 ? _this$calendarObjectI28 : false;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Returns whether or not the event is pending
|
||||||
|
*
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
isCalendarPending() {
|
||||||
|
var _this$calendarObjectI30, _this$calendarObjectI31;
|
||||||
|
return (_this$calendarObjectI30 = (_this$calendarObjectI31 = this.calendarObjectInstance) === null || _this$calendarObjectI31 === void 0 ? void 0 : _this$calendarObjectI31.isCalendarPending) !== null && _this$calendarObjectI30 !== void 0 ? _this$calendarObjectI30 : false;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns whether or not the user is allowed to modify the all-day setting
|
* Returns whether or not the user is allowed to modify the all-day setting
|
||||||
@ -17082,8 +17217,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
canModifyAllDay() {
|
canModifyAllDay() {
|
||||||
var _this$calendarObjectI28, _this$calendarObjectI29;
|
var _this$calendarObjectI32, _this$calendarObjectI33;
|
||||||
return (_this$calendarObjectI28 = (_this$calendarObjectI29 = this.calendarObjectInstance) === null || _this$calendarObjectI29 === void 0 ? void 0 : _this$calendarObjectI29.canModifyAllDay) !== null && _this$calendarObjectI28 !== void 0 ? _this$calendarObjectI28 : false;
|
return (_this$calendarObjectI32 = (_this$calendarObjectI33 = this.calendarObjectInstance) === null || _this$calendarObjectI33 === void 0 ? void 0 : _this$calendarObjectI33.canModifyAllDay) !== null && _this$calendarObjectI32 !== void 0 ? _this$calendarObjectI32 : false;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns the color the illustration should be colored in
|
* Returns the color the illustration should be colored in
|
||||||
@ -17115,8 +17250,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
* @return {null | string}
|
* @return {null | string}
|
||||||
*/
|
*/
|
||||||
color() {
|
color() {
|
||||||
var _this$calendarObjectI30, _this$calendarObjectI31;
|
var _this$calendarObjectI34, _this$calendarObjectI35;
|
||||||
return (_this$calendarObjectI30 = (_this$calendarObjectI31 = this.calendarObjectInstance) === null || _this$calendarObjectI31 === void 0 ? void 0 : _this$calendarObjectI31.customColor) !== null && _this$calendarObjectI30 !== void 0 ? _this$calendarObjectI30 : null;
|
return (_this$calendarObjectI34 = (_this$calendarObjectI35 = this.calendarObjectInstance) === null || _this$calendarObjectI35 === void 0 ? void 0 : _this$calendarObjectI35.customColor) !== null && _this$calendarObjectI34 !== void 0 ? _this$calendarObjectI34 : null;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns whether or not to display save buttons
|
* Returns whether or not to display save buttons
|
||||||
@ -17398,6 +17533,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
this.isSaving = true;
|
this.isSaving = true;
|
||||||
try {
|
try {
|
||||||
|
this.setPendingCalendar(false);
|
||||||
await this.$store.dispatch('saveCalendarObjectInstance', {
|
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||||
thisAndAllFuture,
|
thisAndAllFuture,
|
||||||
calendarId: this.calendarId
|
calendarId: this.calendarId
|
||||||
@ -17412,6 +17548,43 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
this.isSaving = false;
|
this.isSaving = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setPendingCalendar() {
|
||||||
|
let isPending = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
||||||
|
this.calendarObjectInstance.eventComponent.isCalendarPending = isPending;
|
||||||
|
this.calendarObjectInstance.isCalendarPending = isPending;
|
||||||
|
},
|
||||||
|
async savePendingCalendar() {
|
||||||
|
let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||||
|
if (!this.calendarObject) {
|
||||||
|
_utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Calendar-object not found');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.isReadOnly) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.forceThisAndAllFuture) {
|
||||||
|
thisAndAllFuture = true;
|
||||||
|
}
|
||||||
|
this.isLoading = true;
|
||||||
|
this.isSaving = true;
|
||||||
|
try {
|
||||||
|
this.setPendingCalendar();
|
||||||
|
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||||
|
thisAndAllFuture,
|
||||||
|
calendarId: this.calendarId
|
||||||
|
});
|
||||||
|
this.requiresActionOnRouteLeave = false;
|
||||||
|
} catch (error) {
|
||||||
|
_utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error("Failed to save event: ".concat(error));
|
||||||
|
(0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'Failed to save event'));
|
||||||
|
this.calendarObjectInstance.eventComponent.markDirty();
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
this.isLoading = false;
|
||||||
|
this.isSaving = false;
|
||||||
|
this.closeEditor();
|
||||||
|
}
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* Saves a calendar-object and closes the editor
|
* Saves a calendar-object and closes the editor
|
||||||
*
|
*
|
||||||
@ -17601,6 +17774,15 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
isLeave
|
isLeave
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Toggles the event pending
|
||||||
|
*/
|
||||||
|
toggleIsCalendarPending(isCalendarPending) {
|
||||||
|
this.$store.commit('toggleIsCalendarPending', {
|
||||||
|
calendarObjectInstance: this.calendarObjectInstance,
|
||||||
|
isCalendarPending
|
||||||
|
});
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* Resets the internal state after changing the viewed calendar-object
|
* Resets the internal state after changing the viewed calendar-object
|
||||||
*/
|
*/
|
||||||
@ -20720,11 +20902,9 @@ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBP
|
|||||||
// Module
|
// Module
|
||||||
___CSS_LOADER_EXPORT___.push([module.id, `.save-buttons[data-v-8f0b8a9c] {
|
___CSS_LOADER_EXPORT___.push([module.id, `.save-buttons[data-v-8f0b8a9c] {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: end;
|
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
}
|
|
||||||
.save-buttons--grow[data-v-8f0b8a9c] {
|
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.save-buttons--grow button[data-v-8f0b8a9c] {
|
.save-buttons--grow button[data-v-8f0b8a9c] {
|
||||||
flex: 1 fit-content;
|
flex: 1 fit-content;
|
||||||
@ -20900,6 +21080,39 @@ ___CSS_LOADER_EXPORT___.push([module.id, `
|
|||||||
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css":
|
||||||
|
/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||||
|
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css ***!
|
||||||
|
\******************************************************************************************************************************************************************************************************************************************************************************************/
|
||||||
|
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
||||||
|
/* harmony export */ });
|
||||||
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js");
|
||||||
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
||||||
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
||||||
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
||||||
|
// Imports
|
||||||
|
|
||||||
|
|
||||||
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
||||||
|
// Module
|
||||||
|
___CSS_LOADER_EXPORT___.push([module.id, `
|
||||||
|
.checkbox-container[data-v-6aff0820] {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
`, ""]);
|
||||||
|
// Exports
|
||||||
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css":
|
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css":
|
||||||
@ -20988,6 +21201,61 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|||||||
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css":
|
||||||
|
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||||
|
!*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css ***!
|
||||||
|
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
||||||
|
/* harmony export */ });
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
||||||
|
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var options = {};
|
||||||
|
|
||||||
|
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
||||||
|
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
||||||
|
|
||||||
|
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
||||||
|
|
||||||
|
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
||||||
|
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
||||||
|
|
||||||
|
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css":
|
/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css":
|
||||||
@ -23090,6 +23358,47 @@ component.options.__file = "src/components/Editor/OrganizerNoEmailError.vue"
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue":
|
||||||
|
/*!************************************************************************!*\
|
||||||
|
!*** ./src/components/Editor/Properties/PropertyIsCalendarPending.vue ***!
|
||||||
|
\************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
||||||
|
/* harmony export */ });
|
||||||
|
/* harmony import */ var _PropertyIsCalendarPending_vue_vue_type_template_id_6aff0820_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true");
|
||||||
|
/* harmony import */ var _PropertyIsCalendarPending_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PropertyIsCalendarPending.vue?vue&type=script&lang=js */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js");
|
||||||
|
/* harmony import */ var _PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css");
|
||||||
|
/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/* normalize component */
|
||||||
|
|
||||||
|
var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
|
||||||
|
_PropertyIsCalendarPending_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
|
||||||
|
_PropertyIsCalendarPending_vue_vue_type_template_id_6aff0820_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render,
|
||||||
|
_PropertyIsCalendarPending_vue_vue_type_template_id_6aff0820_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
"6aff0820",
|
||||||
|
null
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
/* hot reload */
|
||||||
|
if (false) { var api; }
|
||||||
|
component.options.__file = "src/components/Editor/Properties/PropertyIsCalendarPending.vue"
|
||||||
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue":
|
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue":
|
||||||
/*!**************************************************************!*\
|
/*!**************************************************************!*\
|
||||||
!*** ./src/components/Editor/Properties/PropertyIsLeave.vue ***!
|
!*** ./src/components/Editor/Properties/PropertyIsLeave.vue ***!
|
||||||
@ -24745,6 +25054,22 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js":
|
||||||
|
/*!************************************************************************************************!*\
|
||||||
|
!*** ./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js ***!
|
||||||
|
\************************************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
||||||
|
/* harmony export */ });
|
||||||
|
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsCalendarPending.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js");
|
||||||
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js":
|
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js":
|
||||||
/*!**************************************************************************************!*\
|
/*!**************************************************************************************!*\
|
||||||
!*** ./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js ***!
|
!*** ./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js ***!
|
||||||
@ -25946,6 +26271,23 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_OrganizerNoEmailError_vue_vue_type_template_id_af50adac__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganizerNoEmailError.vue?vue&type=template&id=af50adac */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/OrganizerNoEmailError.vue?vue&type=template&id=af50adac");
|
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_OrganizerNoEmailError_vue_vue_type_template_id_af50adac__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganizerNoEmailError.vue?vue&type=template&id=af50adac */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/OrganizerNoEmailError.vue?vue&type=template&id=af50adac");
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true":
|
||||||
|
/*!******************************************************************************************************************!*\
|
||||||
|
!*** ./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true ***!
|
||||||
|
\******************************************************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_template_id_6aff0820_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render),
|
||||||
|
/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_template_id_6aff0820_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
|
||||||
|
/* harmony export */ });
|
||||||
|
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_template_id_6aff0820_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true");
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true":
|
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true":
|
||||||
@ -26316,6 +26658,19 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css");
|
/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css");
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css":
|
||||||
|
/*!********************************************************************************************************************************!*\
|
||||||
|
!*** ./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css ***!
|
||||||
|
\********************************************************************************************************************************/
|
||||||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
__webpack_require__.r(__webpack_exports__);
|
||||||
|
/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css");
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css":
|
/***/ "./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css":
|
||||||
@ -27722,4 +28077,4 @@ module.exports = "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/sv
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254.js.map?v=0c8bf313c8f88a9c37dc
|
//# sourceMappingURL=calendar-src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254.js.map?v=cb7912c432f0c01a7af2
|
||||||
File diff suppressed because one or more lines are too long
@ -42554,4 +42554,4 @@ function hasInjectionContext() {
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5.js.map?v=99f11830ab88b8e43c46
|
//# sourceMappingURL=calendar-vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5.js.map?v=7212b31e059bc10c256e
|
||||||
File diff suppressed because one or more lines are too long
@ -104883,4 +104883,4 @@ module.exports = /*#__PURE__*/JSON.parse('{"compressed":true,"categories":[{"id"
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065.js.map?v=8bef6f975133a8c4edd8
|
//# sourceMappingURL=calendar-vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065.js.map?v=55e669bcb78e07cd54cc
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -21864,4 +21864,4 @@ const webNamespaces = {
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981.js.map?v=bdd28dbe55827e26cea9
|
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981.js.map?v=31a7d4ece3cdde2d67f1
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -24822,4 +24822,4 @@ window._registerCustomPickerElement = _;
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d.js.map?v=f0bb6d2e2475fb1d8ec6
|
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d.js.map?v=56b7e44c1982f74f69ca
|
||||||
File diff suppressed because one or more lines are too long
@ -80146,4 +80146,4 @@ module.exports = /*#__PURE__*/JSON.parse('{"compressed":true,"categories":[{"id"
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f.js.map?v=1f92a9e046dd68952989
|
//# sourceMappingURL=calendar-vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f.js.map?v=7ec0cf6b65f5c745fa03
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -2030,4 +2030,4 @@ render._withStripped = true
|
|||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
//# sourceMappingURL=calendar-vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8.js.map?v=28880218870abee4b857
|
//# sourceMappingURL=calendar-vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8.js.map?v=1ec24b5ef07652c6dd39
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -139,7 +139,9 @@ export default {
|
|||||||
...getFullCalendarLocale(),
|
...getFullCalendarLocale(),
|
||||||
// Rendering
|
// Rendering
|
||||||
dayHeaderDidMount,
|
dayHeaderDidMount,
|
||||||
eventDidMount,
|
eventDidMount : (info) => {
|
||||||
|
this.addPendinEventClass(info);
|
||||||
|
},
|
||||||
noEventsDidMount,
|
noEventsDidMount,
|
||||||
eventOrder: ['start', '-duration', 'allDay', eventOrder],
|
eventOrder: ['start', '-duration', 'allDay', eventOrder],
|
||||||
forceEventDuration: false,
|
forceEventDuration: false,
|
||||||
@ -159,6 +161,13 @@ export default {
|
|||||||
timeZone: this.timezoneId,
|
timeZone: this.timezoneId,
|
||||||
// Disable jumping in week view and day view when clicking on any event using the simple editor
|
// Disable jumping in week view and day view when clicking on any event using the simple editor
|
||||||
scrollTimeReset: false,
|
scrollTimeReset: false,
|
||||||
|
eventClassNames: (arg) => {
|
||||||
|
let classes = [];
|
||||||
|
if (arg.event.extendedProps.isCalendarPending) {
|
||||||
|
classes.push('pending-event');
|
||||||
|
}
|
||||||
|
return classes;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
eventSources() {
|
eventSources() {
|
||||||
@ -302,6 +311,12 @@ export default {
|
|||||||
this.$store.dispatch('setInitialView', { initialView })
|
this.$store.dispatch('setInitialView', { initialView })
|
||||||
}
|
}
|
||||||
}, 5000),
|
}, 5000),
|
||||||
|
addPendinEventClass(info){
|
||||||
|
if (info.event.extendedProps.isCalendarPending) {
|
||||||
|
info.el.style.backgroundColor = info.event.backgroundColor;
|
||||||
|
info.el.style.color = info.event.textColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div v-if="!isReadOnly" class="property-title-time-picker">
|
||||||
|
<div class="property-title-time-picker__all-day">
|
||||||
|
<NcCheckboxRadioSwitch :checked="isCalendarPending"
|
||||||
|
@update:checked="toggleIsCalendarPending">
|
||||||
|
En attente
|
||||||
|
</NcCheckboxRadioSwitch>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { NcCheckboxRadioSwitch } from '@nextcloud/vue'
|
||||||
|
export default {
|
||||||
|
name: "PropertyIsCalendarPending",
|
||||||
|
components: {
|
||||||
|
NcCheckboxRadioSwitch,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
isCalendarPending: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toggleIsCalendarPending() {
|
||||||
|
const newIsCalendarPendingState = !this.isCalendarPending;
|
||||||
|
this.$emit('toggle-is-calendar-pending',newIsCalendarPendingState)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.checkbox-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
@ -15,7 +15,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { NcCheckboxRadioSwitch } from '@nextcloud/vue'
|
import { NcCheckboxRadioSwitch } from '@nextcloud/vue'
|
||||||
export default {
|
export default {
|
||||||
name: "CheckboxComponent",
|
name: "PropertyIsLeave",
|
||||||
components: {
|
components: {
|
||||||
NcCheckboxRadioSwitch,
|
NcCheckboxRadioSwitch,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -23,6 +23,13 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="save-buttons" :class="{ 'save-buttons--grow': growHorizontally }">
|
<div class="save-buttons" :class="{ 'save-buttons--grow': growHorizontally }">
|
||||||
|
<NcButton
|
||||||
|
v-if="!isCalendarPending && !isReadOnly"
|
||||||
|
@click="saveAsPendingCalendarEvent"
|
||||||
|
:class="'d-flex w-max-content'"
|
||||||
|
>
|
||||||
|
Mettre en attente
|
||||||
|
</NcButton>
|
||||||
<NcButton v-if="showMoreButton"
|
<NcButton v-if="showMoreButton"
|
||||||
:type="moreButtonType"
|
:type="moreButtonType"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
@ -108,6 +115,10 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
isCalendarPending : {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
showSaveButton() {
|
showSaveButton() {
|
||||||
@ -127,6 +138,9 @@ export default {
|
|||||||
saveThisOnly() {
|
saveThisOnly() {
|
||||||
this.$emit('save-this-only')
|
this.$emit('save-this-only')
|
||||||
},
|
},
|
||||||
|
saveAsPendingCalendarEvent() {
|
||||||
|
this.$emit('save-pending-calendar-event')
|
||||||
|
},
|
||||||
saveThisAndAllFuture() {
|
saveThisAndAllFuture() {
|
||||||
this.$emit('save-this-and-all-future')
|
this.$emit('save-this-and-all-future')
|
||||||
},
|
},
|
||||||
@ -138,17 +152,18 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
.save-buttons {
|
.save-buttons {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: end;
|
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
|
|
||||||
&--grow {
|
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
&--grow {
|
||||||
|
|
||||||
button {
|
button {
|
||||||
flex: 1 fit-content;
|
flex: 1 fit-content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import {
|
|||||||
hexToRGB,
|
hexToRGB,
|
||||||
isLight,
|
isLight,
|
||||||
generateTextColorForHex,
|
generateTextColorForHex,
|
||||||
getHexForColorName,
|
getHexForColorName
|
||||||
} from '../../utils/color.js'
|
} from '../../utils/color.js'
|
||||||
import logger from '../../utils/logger.js'
|
import logger from '../../utils/logger.js'
|
||||||
import { getAllObjectsInTimeRange } from '../../utils/calendarObject.js'
|
import { getAllObjectsInTimeRange } from '../../utils/calendarObject.js'
|
||||||
@ -119,6 +119,12 @@ export function eventSourceFunction(calendarObjects, calendar, start, end, timez
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let isCalendarPending = false;
|
||||||
|
let objectProperties = object._properties.get('ISCALENDARPENDING');
|
||||||
|
if (objectProperties && objectProperties.length > 0) {
|
||||||
|
isCalendarPending = objectProperties[0]._value == "1" ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
const fcEvent = {
|
const fcEvent = {
|
||||||
id: [calendarObject.id, object.id].join('###'),
|
id: [calendarObject.id, object.id].join('###'),
|
||||||
title,
|
title,
|
||||||
@ -143,9 +149,16 @@ export function eventSourceFunction(calendarObjects, calendar, start, end, timez
|
|||||||
davUrl: calendarObject.dav.url,
|
davUrl: calendarObject.dav.url,
|
||||||
location: object.location,
|
location: object.location,
|
||||||
description: object.description,
|
description: object.description,
|
||||||
|
isCalendarPending: isCalendarPending
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isCalendarPending){
|
||||||
|
fcEvent.backgroundColor = calendar.color
|
||||||
|
fcEvent.borderColor = calendar.color
|
||||||
|
fcEvent.textColor = generateTextColorForHex(calendar.color)
|
||||||
|
}
|
||||||
|
|
||||||
if (object.color) {
|
if (object.color) {
|
||||||
const customColor = getHexForColorName(object.color)
|
const customColor = getHexForColorName(object.color)
|
||||||
if (customColor) {
|
if (customColor) {
|
||||||
|
|||||||
@ -119,7 +119,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the embalmer(Thanato) or null if the event is still loading
|
* Returns the isleave property
|
||||||
*
|
*
|
||||||
* @return {string|null}
|
* @return {string|null}
|
||||||
*/
|
*/
|
||||||
@ -127,6 +127,15 @@ export default {
|
|||||||
return this.calendarObjectInstance?.isLeave ?? false
|
return this.calendarObjectInstance?.isLeave ?? false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the iscalendarpending property
|
||||||
|
*
|
||||||
|
* @return {string|null}
|
||||||
|
*/
|
||||||
|
isCalendarPending() {
|
||||||
|
return this.calendarObjectInstance?.isCalendarPending ?? false
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the comment or null if the event is still loading
|
* Returns the comment or null if the event is still loading
|
||||||
*
|
*
|
||||||
@ -194,6 +203,15 @@ export default {
|
|||||||
isLeave() {
|
isLeave() {
|
||||||
return this.calendarObjectInstance?.isLeave ?? false
|
return this.calendarObjectInstance?.isLeave ?? false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not the event is pending
|
||||||
|
*
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
isCalendarPending() {
|
||||||
|
return this.calendarObjectInstance?.isCalendarPending ?? false
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* Returns whether or not the user is allowed to modify the all-day setting
|
* Returns whether or not the user is allowed to modify the all-day setting
|
||||||
*
|
*
|
||||||
@ -537,6 +555,7 @@ export default {
|
|||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
this.isSaving = true
|
this.isSaving = true
|
||||||
try {
|
try {
|
||||||
|
this.setPendingCalendar(false);
|
||||||
await this.$store.dispatch('saveCalendarObjectInstance', {
|
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||||
thisAndAllFuture,
|
thisAndAllFuture,
|
||||||
calendarId: this.calendarId,
|
calendarId: this.calendarId,
|
||||||
@ -551,6 +570,44 @@ export default {
|
|||||||
this.isSaving = false
|
this.isSaving = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setPendingCalendar(isPending = true) {
|
||||||
|
this.calendarObjectInstance.eventComponent.isCalendarPending = isPending
|
||||||
|
this.calendarObjectInstance.isCalendarPending = isPending
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
async savePendingCalendar(thisAndAllFuture = false) {
|
||||||
|
if (!this.calendarObject) {
|
||||||
|
logger.error('Calendar-object not found')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.isReadOnly) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.forceThisAndAllFuture) {
|
||||||
|
thisAndAllFuture = true
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isLoading = true
|
||||||
|
this.isSaving = true
|
||||||
|
try {
|
||||||
|
this.setPendingCalendar();
|
||||||
|
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||||
|
thisAndAllFuture,
|
||||||
|
calendarId: this.calendarId,
|
||||||
|
})
|
||||||
|
this.requiresActionOnRouteLeave = false
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`Failed to save event: ${error}`)
|
||||||
|
showError(t('calendar', 'Failed to save event'))
|
||||||
|
this.calendarObjectInstance.eventComponent.markDirty()
|
||||||
|
throw error
|
||||||
|
} finally {
|
||||||
|
this.isLoading = false
|
||||||
|
this.isSaving = false
|
||||||
|
this.closeEditor()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves a calendar-object and closes the editor
|
* Saves a calendar-object and closes the editor
|
||||||
@ -749,6 +806,16 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggles the event pending
|
||||||
|
*/
|
||||||
|
toggleIsCalendarPending(isCalendarPending) {
|
||||||
|
this.$store.commit('toggleIsCalendarPending', {
|
||||||
|
calendarObjectInstance: this.calendarObjectInstance,
|
||||||
|
isCalendarPending
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets the internal state after changing the viewed calendar-object
|
* Resets the internal state after changing the viewed calendar-object
|
||||||
|
|||||||
@ -54,6 +54,8 @@ const getDefaultEventObject = (props = {}) => Object.assign({}, {
|
|||||||
isAllDay: false,
|
isAllDay: false,
|
||||||
//leave
|
//leave
|
||||||
isLeave: false,
|
isLeave: false,
|
||||||
|
//calendarPending
|
||||||
|
isCalendarPending: false,
|
||||||
// Whether or not the user is allowed to toggle the all-day checkbox
|
// Whether or not the user is allowed to toggle the all-day checkbox
|
||||||
canModifyAllDay: true,
|
canModifyAllDay: true,
|
||||||
// Location that the event takes places in
|
// Location that the event takes places in
|
||||||
@ -109,6 +111,7 @@ const mapEventComponentToEventObject = (eventComponent) => {
|
|||||||
title: eventComponent.title,
|
title: eventComponent.title,
|
||||||
isAllDay: eventComponent.isAllDay(),
|
isAllDay: eventComponent.isAllDay(),
|
||||||
isLeave: false,
|
isLeave: false,
|
||||||
|
isCalendarPending: false,
|
||||||
canModifyAllDay: eventComponent.canModifyAllDay(),
|
canModifyAllDay: eventComponent.canModifyAllDay(),
|
||||||
location: eventComponent.location,
|
location: eventComponent.location,
|
||||||
client : "CLIENT",
|
client : "CLIENT",
|
||||||
@ -214,6 +217,9 @@ const mapEventComponentToEventObject = (eventComponent) => {
|
|||||||
if(eventComponent.hasProperty('ISLEAVE')){
|
if(eventComponent.hasProperty('ISLEAVE')){
|
||||||
eventObject.isLeave = eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1' ? true : false;
|
eventObject.isLeave = eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1' ? true : false;
|
||||||
}
|
}
|
||||||
|
if(eventComponent.hasProperty('ISCALENDARPENDING')){
|
||||||
|
eventObject.isCalendarPending = eventComponent.getFirstPropertyFirstValue('ISCALENDARPENDING') === '1' ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
return eventObject;
|
return eventObject;
|
||||||
}
|
}
|
||||||
@ -230,6 +236,7 @@ const copyCalendarObjectInstanceIntoEventComponent = (eventObject, eventComponen
|
|||||||
eventComponent.client = eventObject.client
|
eventComponent.client = eventObject.client
|
||||||
eventComponent.embalmer = eventObject.embalmer
|
eventComponent.embalmer = eventObject.embalmer
|
||||||
eventComponent.isLeave = eventObject.isLeave
|
eventComponent.isLeave = eventObject.isLeave
|
||||||
|
eventComponent.isCalendarPending = eventObject.isCalendarPending
|
||||||
eventComponent.comment = eventObject.comment
|
eventComponent.comment = eventObject.comment
|
||||||
eventComponent.description = eventObject.description
|
eventComponent.description = eventObject.description
|
||||||
eventComponent.accessClass = eventObject.accessClass
|
eventComponent.accessClass = eventObject.accessClass
|
||||||
|
|||||||
@ -302,6 +302,18 @@ const mutations = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is Calendar Pending
|
||||||
|
*
|
||||||
|
* @param {object} state The Vuex state
|
||||||
|
* @param {object} data The destructuring object
|
||||||
|
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
|
||||||
|
*/
|
||||||
|
toggleIsCalendarPending(state, { calendarObjectInstance, isCalendarPending }) {
|
||||||
|
calendarObjectInstance.eventComponent.isCalendarPending = isCalendarPending
|
||||||
|
calendarObjectInstance.isCalendarPending = isCalendarPending
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the time of a timed event to the default values
|
* Changes the time of a timed event to the default values
|
||||||
*
|
*
|
||||||
@ -1713,7 +1725,6 @@ const actions = {
|
|||||||
async saveCalendarObjectInstance({ state, dispatch, commit }, { thisAndAllFuture, calendarId }) {
|
async saveCalendarObjectInstance({ state, dispatch, commit }, { thisAndAllFuture, calendarId }) {
|
||||||
const eventComponent = state.calendarObjectInstance.eventComponent
|
const eventComponent = state.calendarObjectInstance.eventComponent
|
||||||
const calendarObject = state.calendarObject
|
const calendarObject = state.calendarObject
|
||||||
|
|
||||||
updateAlarms(eventComponent)
|
updateAlarms(eventComponent)
|
||||||
updateTalkParticipants(eventComponent)
|
updateTalkParticipants(eventComponent)
|
||||||
let client = eventComponent.client;
|
let client = eventComponent.client;
|
||||||
@ -1721,19 +1732,18 @@ const actions = {
|
|||||||
let additionalFieldWasUpdated =
|
let additionalFieldWasUpdated =
|
||||||
eventComponent.client != null ||
|
eventComponent.client != null ||
|
||||||
eventComponent.comment != null ||
|
eventComponent.comment != null ||
|
||||||
eventComponent.isLeave != null;
|
eventComponent.isLeave != null ||
|
||||||
|
eventComponent.isCalendarPending != null;
|
||||||
if (eventComponent.isDirty() || additionalFieldWasUpdated) {
|
if (eventComponent.isDirty() || additionalFieldWasUpdated) {
|
||||||
const isForkedItem = eventComponent.primaryItem !== null
|
const isForkedItem = eventComponent.primaryItem !== null
|
||||||
let original = null
|
let original = null
|
||||||
let fork = null
|
let fork = null
|
||||||
|
|
||||||
// We check if two things apply:
|
// We check if two things apply:
|
||||||
// - primaryItem !== null -> Is this a fork or not?
|
// - primaryItem !== null -> Is this a fork or not?
|
||||||
// - eventComponent.canCreateRecurrenceExceptions() - Can we create a recurrence-exception for this item
|
// - eventComponent.canCreateRecurrenceExceptions() - Can we create a recurrence-exception for this item
|
||||||
if (isForkedItem && eventComponent.canCreateRecurrenceExceptions()) {
|
if (isForkedItem && eventComponent.canCreateRecurrenceExceptions()) {
|
||||||
[original, fork] = eventComponent.createRecurrenceException(thisAndAllFuture)
|
[original, fork] = eventComponent.createRecurrenceException(thisAndAllFuture)
|
||||||
}
|
}
|
||||||
|
|
||||||
await dispatch('updateCalendarObject', { calendarObject })
|
await dispatch('updateCalendarObject', { calendarObject })
|
||||||
|
|
||||||
if (original !== null && fork !== null && original.root !== fork.root) {
|
if (original !== null && fork !== null && original.root !== fork.root) {
|
||||||
|
|||||||
@ -230,16 +230,58 @@ const actions = {
|
|||||||
if(eventComponent != null){
|
if(eventComponent != null){
|
||||||
if(eventComponent.client != null){
|
if(eventComponent.client != null){
|
||||||
let newClientKeyValue = "CLIENT:"+eventComponent.client;
|
let newClientKeyValue = "CLIENT:"+eventComponent.client;
|
||||||
icsValue = icsValue.replace(/CLIENT:\d+/, newClientKeyValue);
|
let regex = /CLIENT:\d+/;
|
||||||
|
if(regex.test(icsValue)){
|
||||||
|
icsValue = icsValue.replace(regex, newClientKeyValue);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
const customKeyValue = {
|
||||||
|
"CLIENT": isCalendarPendingValue
|
||||||
|
};
|
||||||
|
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(eventComponent.comment != null){
|
if(eventComponent.comment != null){
|
||||||
let newCommentKeyValue = "COMMENT:"+eventComponent.comment;
|
let newCommentKeyValue = "COMMENT:"+eventComponent.comment;
|
||||||
icsValue = icsValue.replace(/COMMENT:[^\s]+/, newCommentKeyValue);
|
let regex = /COMMENT:[^\s]+/;
|
||||||
|
if(regex.test(icsValue)){
|
||||||
|
icsValue = icsValue.replace(regex, newCommentKeyValue);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
const customKeyValue = {
|
||||||
|
"COMMENT": eventComponent.comment
|
||||||
|
};
|
||||||
|
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(eventComponent.isLeave != null){
|
if(eventComponent.isLeave != null){
|
||||||
let isLeaveValue = eventComponent.isLeave ? "1" : "0";
|
let isLeaveValue = eventComponent.isLeave ? "1" : "0";
|
||||||
let newIsLeaveKeyValue = "ISLEAVE:"+isLeaveValue;
|
let newIsLeaveKeyValue = "ISLEAVE:"+isLeaveValue;
|
||||||
icsValue = icsValue.replace(/ISLEAVE:\d+/, newIsLeaveKeyValue);
|
let regex = /ISLEAVE:\d+/;
|
||||||
|
if(regex.test(icsValue)){
|
||||||
|
icsValue = icsValue.replace(regex, newIsLeaveKeyValue);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
const customKeyValue = {
|
||||||
|
"ISLEAVE": isLeaveValue
|
||||||
|
};
|
||||||
|
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(eventComponent.isCalendarPending != null){
|
||||||
|
debugger;
|
||||||
|
let isCalendarPendingValue = eventComponent.isCalendarPending ? "1" : "0";
|
||||||
|
let newIsCalendarPendingKeyValue = "ISCALENDARPENDING:"+isCalendarPendingValue;
|
||||||
|
let regex = /ISCALENDARPENDING:\d+/;
|
||||||
|
if(regex.test(icsValue)){
|
||||||
|
icsValue = icsValue.replace(regex, newIsCalendarPendingKeyValue);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
const customKeyValue = {
|
||||||
|
"ISCALENDARPENDING": isCalendarPendingValue
|
||||||
|
};
|
||||||
|
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
calendarObject.dav.data = icsValue;
|
calendarObject.dav.data = icsValue;
|
||||||
@ -261,6 +303,7 @@ const actions = {
|
|||||||
"EMBALMER": eventComponent.embalmer,
|
"EMBALMER": eventComponent.embalmer,
|
||||||
"COMMENT": eventComponent.comment,
|
"COMMENT": eventComponent.comment,
|
||||||
"ISLEAVE": eventComponent.isLeave ? "1" : "0",
|
"ISLEAVE": eventComponent.isLeave ? "1" : "0",
|
||||||
|
"ISCALENDARPENDING": eventComponent.isCalendarPending ? "1" : "0",
|
||||||
};
|
};
|
||||||
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
|
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,6 +108,11 @@
|
|||||||
:is-leave="isLeave"
|
:is-leave="isLeave"
|
||||||
@toggle-is-leave="toggleIsLeave" />
|
@toggle-is-leave="toggleIsLeave" />
|
||||||
|
|
||||||
|
<!-- <PropertyIsCalendarPending
|
||||||
|
:is-read-only="isReadOnly"
|
||||||
|
:is-calendar-pending="isCalendarPending"
|
||||||
|
@toggle-is-calendar-pending="toggleIsCalendarPending" /> -->
|
||||||
|
|
||||||
<PropertySelectClient class="property-location"
|
<PropertySelectClient class="property-location"
|
||||||
url="/apps/gestion/ajaxGetClientsName"
|
url="/apps/gestion/ajaxGetClientsName"
|
||||||
:is-read-only="isReadOnly"
|
:is-read-only="isReadOnly"
|
||||||
@ -262,10 +267,15 @@
|
|||||||
class="app-sidebar-tab__buttons"
|
class="app-sidebar-tab__buttons"
|
||||||
:can-create-recurrence-exception="canCreateRecurrenceException"
|
:can-create-recurrence-exception="canCreateRecurrenceException"
|
||||||
:is-new="isNew"
|
:is-new="isNew"
|
||||||
|
:is-calendar-pending="isCalendarPending"
|
||||||
|
|
||||||
:isReadOnly="false"
|
:isReadOnly="false"
|
||||||
:force-this-and-all-future="forceThisAndAllFuture"
|
:force-this-and-all-future="forceThisAndAllFuture"
|
||||||
@save-this-only="prepareAccessForAttachments(false)"
|
@save-this-only="prepareAccessForAttachments(false)"
|
||||||
@save-this-and-all-future="prepareAccessForAttachments(true)" />
|
@save-this-and-all-future="prepareAccessForAttachments(true)"
|
||||||
|
@save-pending-calendar-event="saveAsPendingCalendarEvent"
|
||||||
|
|
||||||
|
/>
|
||||||
</NcAppSidebarTab>
|
</NcAppSidebarTab>
|
||||||
<NcAppSidebarTab v-if="!isLoading && !isError"
|
<NcAppSidebarTab v-if="!isLoading && !isError"
|
||||||
id="app-sidebar-tab-attendees"
|
id="app-sidebar-tab-attendees"
|
||||||
@ -287,10 +297,13 @@
|
|||||||
class="app-sidebar-tab__buttons"
|
class="app-sidebar-tab__buttons"
|
||||||
:can-create-recurrence-exception="canCreateRecurrenceException"
|
:can-create-recurrence-exception="canCreateRecurrenceException"
|
||||||
:is-new="isNew"
|
:is-new="isNew"
|
||||||
|
:is-calendar-pending="isCalendarPending"
|
||||||
|
|
||||||
:isReadOnly="false"
|
:isReadOnly="false"
|
||||||
:force-this-and-all-future="forceThisAndAllFuture"
|
:force-this-and-all-future="forceThisAndAllFuture"
|
||||||
@save-this-only="prepareAccessForAttachments(false)"
|
@save-this-only="prepareAccessForAttachments(false)"
|
||||||
@save-this-and-all-future="prepareAccessForAttachments(true)" />
|
@save-this-and-all-future="prepareAccessForAttachments(true)"
|
||||||
|
@save-pending-calendar-event="saveAsPendingCalendarEvent"/>
|
||||||
</NcAppSidebarTab>
|
</NcAppSidebarTab>
|
||||||
<NcAppSidebarTab v-if="!isLoading && !isError && showResources"
|
<NcAppSidebarTab v-if="!isLoading && !isError && showResources"
|
||||||
id="app-sidebar-tab-resources"
|
id="app-sidebar-tab-resources"
|
||||||
@ -309,10 +322,13 @@
|
|||||||
class="app-sidebar-tab__buttons"
|
class="app-sidebar-tab__buttons"
|
||||||
:can-create-recurrence-exception="canCreateRecurrenceException"
|
:can-create-recurrence-exception="canCreateRecurrenceException"
|
||||||
:is-new="isNew"
|
:is-new="isNew"
|
||||||
|
:is-calendar-pending="isCalendarPending"
|
||||||
|
|
||||||
:isReadOnly="false"
|
:isReadOnly="false"
|
||||||
:force-this-and-all-future="forceThisAndAllFuture"
|
:force-this-and-all-future="forceThisAndAllFuture"
|
||||||
@save-this-only="prepareAccessForAttachments(false)"
|
@save-this-only="prepareAccessForAttachments(false)"
|
||||||
@save-this-and-all-future="prepareAccessForAttachments(true)" />
|
@save-this-and-all-future="prepareAccessForAttachments(true)"
|
||||||
|
@save-pending-calendar-event="saveAsPendingCalendarEvent"/>
|
||||||
</NcAppSidebarTab>
|
</NcAppSidebarTab>
|
||||||
</NcAppSidebar>
|
</NcAppSidebar>
|
||||||
</template>
|
</template>
|
||||||
@ -370,7 +386,8 @@ import PropertySelectAjaxMultiple from "../components/Editor/Properties/Property
|
|||||||
import PropertySelectLieu from "../components/Editor/Properties/PropertySelectLieu.vue";
|
import PropertySelectLieu from "../components/Editor/Properties/PropertySelectLieu.vue";
|
||||||
import PropertySelectClient from "../components/Editor/Properties/PropertySelectClient.vue";
|
import PropertySelectClient from "../components/Editor/Properties/PropertySelectClient.vue";
|
||||||
import PropertySelectArticle from "../components/Editor/Properties/PropertySelectArticle.vue";
|
import PropertySelectArticle from "../components/Editor/Properties/PropertySelectArticle.vue";
|
||||||
import PropertyIsLeave from '../components/Editor/Properties/PropertyIsLeave.vue'
|
import PropertyIsLeave from '../components/Editor/Properties/PropertyIsLeave.vue';
|
||||||
|
import PropertyIsCalendarPending from '../components/Editor/Properties/PropertyIsCalendarPending';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'EditSidebar',
|
name: 'EditSidebar',
|
||||||
@ -380,6 +397,7 @@ export default {
|
|||||||
PropertySelectLieu,
|
PropertySelectLieu,
|
||||||
PropertySelectClient,
|
PropertySelectClient,
|
||||||
PropertySelectArticle,
|
PropertySelectArticle,
|
||||||
|
PropertyIsCalendarPending,
|
||||||
PropertyIsLeave,
|
PropertyIsLeave,
|
||||||
ResourceList,
|
ResourceList,
|
||||||
PropertyColor,
|
PropertyColor,
|
||||||
@ -425,6 +443,8 @@ export default {
|
|||||||
sharedProgress: 0,
|
sharedProgress: 0,
|
||||||
showPreloader: false,
|
showPreloader: false,
|
||||||
defuntUrl: undefined,
|
defuntUrl: undefined,
|
||||||
|
isCalendarPending: false,
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -487,6 +507,7 @@ export default {
|
|||||||
handler() {
|
handler() {
|
||||||
if(this.calendarObjectInstance) {
|
if(this.calendarObjectInstance) {
|
||||||
this.getDefuntUrl()
|
this.getDefuntUrl()
|
||||||
|
this.isCalendarPending = this.calendarObjectInstance.isCalendarPending ?? false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
deep: true,
|
deep: true,
|
||||||
@ -722,7 +743,21 @@ export default {
|
|||||||
},
|
},
|
||||||
viewDefunt(){
|
viewDefunt(){
|
||||||
window.open(this.defuntUrl, '_blank')
|
window.open(this.defuntUrl, '_blank')
|
||||||
|
},
|
||||||
|
async saveAsPendingCalendarEvent() {
|
||||||
|
if (this.isNew) {
|
||||||
|
await this.savePendingCalendar(false);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.isViewing = true;
|
||||||
|
try {
|
||||||
|
await this.savePendingCalendar(false);
|
||||||
|
this.requiresActionOnRouteLeave = false;
|
||||||
|
} catch (error) {
|
||||||
|
this.isViewing = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -22,13 +22,15 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Popover ref="popover"
|
<Popover
|
||||||
|
ref="popover"
|
||||||
:shown="showPopover"
|
:shown="showPopover"
|
||||||
:auto-hide="false"
|
:auto-hide="false"
|
||||||
:placement="placement"
|
:placement="placement"
|
||||||
:boundary="boundaryElement"
|
:boundary="boundaryElement"
|
||||||
popover-base-class="event-popover"
|
popover-base-class="event-popover"
|
||||||
:triggers="[]">
|
:triggers="[]"
|
||||||
|
>
|
||||||
<div class="event-popover__inner">
|
<div class="event-popover__inner">
|
||||||
<template v-if="isLoading && !isSaving">
|
<template v-if="isLoading && !isSaving">
|
||||||
<PopoverLoadingIndicator />
|
<PopoverLoadingIndicator />
|
||||||
@ -41,12 +43,15 @@
|
|||||||
<template #icon>
|
<template #icon>
|
||||||
<Close :size="20" decorative />
|
<Close :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Close') }}
|
{{ $t("calendar", "Close") }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
</Actions>
|
</Actions>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<EmptyContent :name="$t('calendar', 'Event does not exist')" :description="error">
|
<EmptyContent
|
||||||
|
:name="$t('calendar', 'Event does not exist')"
|
||||||
|
:description="error"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<CalendarBlank :size="20" decorative />
|
<CalendarBlank :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
@ -56,36 +61,50 @@
|
|||||||
<template v-else>
|
<template v-else>
|
||||||
<div class="event-popover__top-right-actions">
|
<div class="event-popover__top-right-actions">
|
||||||
<Actions v-if="!isLoading && !isError && !isNew" :force-menu="true">
|
<Actions v-if="!isLoading && !isError && !isNew" :force-menu="true">
|
||||||
<ActionLink v-if="!hideEventExport && hasDownloadURL"
|
<ActionLink
|
||||||
:href="downloadURL">
|
v-if="!hideEventExport && hasDownloadURL"
|
||||||
|
:href="downloadURL"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<Download :size="20" decorative />
|
<Download :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Export') }}
|
{{ $t("calendar", "Export") }}
|
||||||
</ActionLink>
|
</ActionLink>
|
||||||
<ActionButton v-if="!canCreateRecurrenceException && !isReadOnly" @click="duplicateEvent()">
|
<ActionButton
|
||||||
|
v-if="!canCreateRecurrenceException && !isReadOnly"
|
||||||
|
@click="duplicateEvent()"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<ContentDuplicate :size="20" decorative />
|
<ContentDuplicate :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Duplicate') }}
|
{{ $t("calendar", "Duplicate") }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
<ActionButton v-if="canDelete && !canCreateRecurrenceException" @click="deleteAndLeave(false)">
|
<ActionButton
|
||||||
|
v-if="canDelete && !canCreateRecurrenceException"
|
||||||
|
@click="deleteAndLeave(false)"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<Delete :size="20" decorative />
|
<Delete :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Delete') }}
|
{{ $t("calendar", "Delete") }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
<ActionButton v-if="canDelete && canCreateRecurrenceException" @click="deleteAndLeave(false)">
|
<ActionButton
|
||||||
|
v-if="canDelete && canCreateRecurrenceException"
|
||||||
|
@click="deleteAndLeave(false)"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<Delete :size="20" decorative />
|
<Delete :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Delete this occurrence') }}
|
{{ $t("calendar", "Delete this occurrence") }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
<ActionButton v-if="canDelete && canCreateRecurrenceException" @click="deleteAndLeave(true)">
|
<ActionButton
|
||||||
|
v-if="canDelete && canCreateRecurrenceException"
|
||||||
|
@click="deleteAndLeave(true)"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<Delete :size="20" decorative />
|
<Delete :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Delete this and all future') }}
|
{{ $t("calendar", "Delete this and all future") }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
</Actions>
|
</Actions>
|
||||||
<Actions>
|
<Actions>
|
||||||
@ -93,21 +112,26 @@
|
|||||||
<template #icon>
|
<template #icon>
|
||||||
<Close :size="20" decorative />
|
<Close :size="20" decorative />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Close') }}
|
{{ $t("calendar", "Close") }}
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
</Actions>
|
</Actions>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CalendarPickerHeader :value="selectedCalendar"
|
<CalendarPickerHeader
|
||||||
|
:value="selectedCalendar"
|
||||||
:calendars="calendars"
|
:calendars="calendars"
|
||||||
:is-read-only="isReadOnlyOrViewing || !canModifyCalendar"
|
:is-read-only="isReadOnlyOrViewing || !canModifyCalendar"
|
||||||
@update:value="changeCalendar" />
|
@update:value="changeCalendar"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertyTitle :value="titleOrPlaceholder"
|
<PropertyTitle
|
||||||
|
:value="titleOrPlaceholder"
|
||||||
:is-read-only="isReadOnlyOrViewing"
|
:is-read-only="isReadOnlyOrViewing"
|
||||||
@update:value="updateTitle" />
|
@update:value="updateTitle"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertyTitleTimePicker :start-date="startDate"
|
<PropertyTitleTimePicker
|
||||||
|
:start-date="startDate"
|
||||||
:start-timezone="startTimezone"
|
:start-timezone="startTimezone"
|
||||||
:end-date="endDate"
|
:end-date="endDate"
|
||||||
:end-timezone="endTimezone"
|
:end-timezone="endTimezone"
|
||||||
@ -119,28 +143,39 @@
|
|||||||
@update-start-timezone="updateStartTimezone"
|
@update-start-timezone="updateStartTimezone"
|
||||||
@update-end-date="updateEndDate"
|
@update-end-date="updateEndDate"
|
||||||
@update-end-timezone="updateEndTimezone"
|
@update-end-timezone="updateEndTimezone"
|
||||||
@toggle-all-day="toggleAllDay"/>
|
@toggle-all-day="toggleAllDay"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertyIsLeave
|
<PropertyIsLeave
|
||||||
:is-read-only="isReadOnlyOrViewing"
|
:is-read-only="isReadOnlyOrViewing"
|
||||||
:is-leave="isLeave"
|
:is-leave="isLeave"
|
||||||
@toggle-is-leave="toggleIsLeave" />
|
@toggle-is-leave="toggleIsLeave"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertySelectClient class="property-location"
|
<!-- <PropertyIsCalendarPending
|
||||||
|
:is-read-only="isReadOnlyOrViewing"
|
||||||
|
:is-calendar-pending="isCalendarPending"
|
||||||
|
@toggle-is-calendar-pending="toggleIsCalendarPending" /> -->
|
||||||
|
|
||||||
|
<PropertySelectClient
|
||||||
|
class="property-location"
|
||||||
url="/apps/gestion/ajaxGetClientsName"
|
url="/apps/gestion/ajaxGetClientsName"
|
||||||
:is-read-only="isReadOnly"
|
:is-read-only="isReadOnly"
|
||||||
:prop-model="rfcProps.clients"
|
:prop-model="rfcProps.clients"
|
||||||
:value="client"
|
:value="client"
|
||||||
:linkify-links="true"
|
:linkify-links="true"
|
||||||
@update:value="updateClient" />
|
@update:value="updateClient"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertySelectLieu class="property-location"
|
<PropertySelectLieu
|
||||||
|
class="property-location"
|
||||||
url="/apps/gestion/ajaxGetLieux"
|
url="/apps/gestion/ajaxGetLieux"
|
||||||
:is-read-only="isReadOnly"
|
:is-read-only="isReadOnly"
|
||||||
:prop-model="rfcProps.locations"
|
:prop-model="rfcProps.locations"
|
||||||
:value="location"
|
:value="location"
|
||||||
:linkify-links="true"
|
:linkify-links="true"
|
||||||
@update:value="updateLocation" />
|
@update:value="updateLocation"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertySelectArticle
|
<PropertySelectArticle
|
||||||
:is-read-only="isReadOnlyOrViewing"
|
:is-read-only="isReadOnlyOrViewing"
|
||||||
@ -149,7 +184,8 @@
|
|||||||
:value="description"
|
:value="description"
|
||||||
:linkify-links="true"
|
:linkify-links="true"
|
||||||
@add-single-value="addArticle"
|
@add-single-value="addArticle"
|
||||||
@remove-single-value="removeArticle" />
|
@remove-single-value="removeArticle"
|
||||||
|
/>
|
||||||
|
|
||||||
<PropertyText
|
<PropertyText
|
||||||
:is-read-only="isReadOnly"
|
:is-read-only="isReadOnly"
|
||||||
@ -159,7 +195,8 @@
|
|||||||
@update:value="updateComment"
|
@update:value="updateComment"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<InviteesList class="event-popover__invitees"
|
<InviteesList
|
||||||
|
class="event-popover__invitees"
|
||||||
:hide-if-empty="true"
|
:hide-if-empty="true"
|
||||||
:hide-buttons="true"
|
:hide-buttons="true"
|
||||||
:hide-errors="true"
|
:hide-errors="true"
|
||||||
@ -167,15 +204,20 @@
|
|||||||
:is-read-only="isReadOnlyOrViewing"
|
:is-read-only="isReadOnlyOrViewing"
|
||||||
:is-shared-with-me="isSharedWithMe"
|
:is-shared-with-me="isSharedWithMe"
|
||||||
:calendar-object-instance="calendarObjectInstance"
|
:calendar-object-instance="calendarObjectInstance"
|
||||||
:limit="3" />
|
:limit="3"
|
||||||
|
/>
|
||||||
|
|
||||||
<InvitationResponseButtons v-if="isViewedByAttendee && isViewing"
|
<InvitationResponseButtons
|
||||||
|
v-if="isViewedByAttendee && isViewing"
|
||||||
class="event-popover__response-buttons"
|
class="event-popover__response-buttons"
|
||||||
:attendee="userAsAttendee"
|
:attendee="userAsAttendee"
|
||||||
:calendar-id="calendarId"
|
:calendar-id="calendarId"
|
||||||
@close="closeEditorAndSkipAction" />
|
@close="closeEditorAndSkipAction"
|
||||||
|
/>
|
||||||
|
|
||||||
<SaveButtons v-if="!isWidget"
|
|
||||||
|
<SaveButtons
|
||||||
|
v-if="!isWidget"
|
||||||
class="event-popover__buttons"
|
class="event-popover__buttons"
|
||||||
:can-create-recurrence-exception="canCreateRecurrenceException"
|
:can-create-recurrence-exception="canCreateRecurrenceException"
|
||||||
:is-new="isNew"
|
:is-new="isNew"
|
||||||
@ -185,9 +227,12 @@
|
|||||||
:more-button-type="isViewing ? 'tertiary' : undefined"
|
:more-button-type="isViewing ? 'tertiary' : undefined"
|
||||||
:grow-horizontally="!isViewing && canCreateRecurrenceException"
|
:grow-horizontally="!isViewing && canCreateRecurrenceException"
|
||||||
:disabled="isSaving"
|
:disabled="isSaving"
|
||||||
|
:is-calendar-pending="isCalendarPending"
|
||||||
@save-this-only="saveAndView(false)"
|
@save-this-only="saveAndView(false)"
|
||||||
@save-this-and-all-future="saveAndView(true)"
|
@save-this-and-all-future="saveAndView(true)"
|
||||||
@show-more="showMore">
|
@show-more="showMore"
|
||||||
|
@save-pending-calendar-event="saveAsPendingCalendarEvent"
|
||||||
|
>
|
||||||
<NcButton
|
<NcButton
|
||||||
@click="viewDefunt"
|
@click="viewDefunt"
|
||||||
v-if="defuntUrl"
|
v-if="defuntUrl"
|
||||||
@ -196,13 +241,15 @@
|
|||||||
>
|
>
|
||||||
Voir le defunt
|
Voir le defunt
|
||||||
</NcButton>
|
</NcButton>
|
||||||
<NcButton v-if="!isReadOnly && isViewing"
|
<NcButton
|
||||||
|
v-if="!isReadOnly && isViewing"
|
||||||
:type="isViewedByAttendee ? 'tertiary' : undefined"
|
:type="isViewedByAttendee ? 'tertiary' : undefined"
|
||||||
@click="isViewing = false">
|
@click="isViewing = false"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<EditIcon :size="20" />
|
<EditIcon :size="20" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('calendar', 'Edit') }}
|
{{ $t("calendar", "Edit") }}
|
||||||
</NcButton>
|
</NcButton>
|
||||||
</SaveButtons>
|
</SaveButtons>
|
||||||
</template>
|
</template>
|
||||||
@ -217,43 +264,42 @@ import {
|
|||||||
NcEmptyContent as EmptyContent,
|
NcEmptyContent as EmptyContent,
|
||||||
NcPopover as Popover,
|
NcPopover as Popover,
|
||||||
NcButton,
|
NcButton,
|
||||||
} from '@nextcloud/vue'
|
} from "@nextcloud/vue";
|
||||||
import axios from 'axios'
|
import axios from "axios";
|
||||||
import { generateUrl } from '@nextcloud/router'
|
import { generateUrl } from "@nextcloud/router";
|
||||||
import EditorMixin from '../mixins/EditorMixin.js'
|
import EditorMixin from "../mixins/EditorMixin.js";
|
||||||
import PropertyTitle from '../components/Editor/Properties/PropertyTitle.vue'
|
import PropertyTitle from "../components/Editor/Properties/PropertyTitle.vue";
|
||||||
import PropertyTitleTimePicker
|
import PropertyTitleTimePicker from "../components/Editor/Properties/PropertyTitleTimePicker.vue";
|
||||||
from '../components/Editor/Properties/PropertyTitleTimePicker.vue'
|
import PropertyText from "../components/Editor/Properties/PropertyText.vue";
|
||||||
import PropertyText from '../components/Editor/Properties/PropertyText.vue'
|
import SaveButtons from "../components/Editor/SaveButtons.vue";
|
||||||
import SaveButtons from '../components/Editor/SaveButtons.vue'
|
import PopoverLoadingIndicator from "../components/Popover/PopoverLoadingIndicator.vue";
|
||||||
import PopoverLoadingIndicator
|
import { getPrefixedRoute } from "../utils/router.js";
|
||||||
from '../components/Popover/PopoverLoadingIndicator.vue'
|
import InvitationResponseButtons from "../components/Editor/InvitationResponseButtons.vue";
|
||||||
import { getPrefixedRoute } from '../utils/router.js'
|
import CalendarPickerHeader from "../components/Editor/CalendarPickerHeader.vue";
|
||||||
import InvitationResponseButtons
|
import InviteesList from "../components/Editor/Invitees/InviteesList.vue";
|
||||||
from '../components/Editor/InvitationResponseButtons.vue'
|
|
||||||
import CalendarPickerHeader from '../components/Editor/CalendarPickerHeader.vue'
|
|
||||||
import InviteesList from '../components/Editor/Invitees/InviteesList.vue'
|
|
||||||
|
|
||||||
import CalendarBlank from 'vue-material-design-icons/CalendarBlank.vue'
|
import CalendarBlank from "vue-material-design-icons/CalendarBlank.vue";
|
||||||
import Close from 'vue-material-design-icons/Close.vue'
|
import Close from "vue-material-design-icons/Close.vue";
|
||||||
import Delete from 'vue-material-design-icons/Delete.vue'
|
import Delete from "vue-material-design-icons/Delete.vue";
|
||||||
import Download from 'vue-material-design-icons/Download.vue'
|
import Download from "vue-material-design-icons/Download.vue";
|
||||||
import ContentDuplicate from 'vue-material-design-icons/ContentDuplicate.vue'
|
import ContentDuplicate from "vue-material-design-icons/ContentDuplicate.vue";
|
||||||
import EditIcon from 'vue-material-design-icons/Pencil.vue'
|
import EditIcon from "vue-material-design-icons/Pencil.vue";
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from "vuex";
|
||||||
import {showError} from "@nextcloud/dialogs";
|
import { showError } from "@nextcloud/dialogs";
|
||||||
import PropertySelect from "../components/Editor/Properties/PropertySelect.vue";
|
import PropertySelect from "../components/Editor/Properties/PropertySelect.vue";
|
||||||
import PropertySelectAjax from "../components/Editor/Properties/PropertySelectAjax.vue";
|
import PropertySelectAjax from "../components/Editor/Properties/PropertySelectAjax.vue";
|
||||||
import PropertySelectAjaxMultiple from "../components/Editor/Properties/PropertySelectAjaxMultiple.vue";
|
import PropertySelectAjaxMultiple from "../components/Editor/Properties/PropertySelectAjaxMultiple.vue";
|
||||||
import PropertySelectLieu from "../components/Editor/Properties/PropertySelectLieu.vue";
|
import PropertySelectLieu from "../components/Editor/Properties/PropertySelectLieu.vue";
|
||||||
import PropertySelectClient from "../components/Editor/Properties/PropertySelectClient.vue";
|
import PropertySelectClient from "../components/Editor/Properties/PropertySelectClient.vue";
|
||||||
import PropertySelectArticle from "../components/Editor/Properties/PropertySelectArticle.vue";
|
import PropertySelectArticle from "../components/Editor/Properties/PropertySelectArticle.vue";
|
||||||
import PropertyIsLeave from '../components/Editor/Properties/PropertyIsLeave.vue'
|
import PropertyIsLeave from "../components/Editor/Properties/PropertyIsLeave.vue";
|
||||||
|
import PropertyIsCalendarPending from "../components/Editor/Properties/PropertyIsCalendarPending";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'EditSimple',
|
name: "EditSimple",
|
||||||
components: {
|
components: {
|
||||||
PropertyIsLeave,
|
PropertyIsLeave,
|
||||||
|
PropertyIsCalendarPending,
|
||||||
PropertySelectAjaxMultiple,
|
PropertySelectAjaxMultiple,
|
||||||
PropertySelectAjax,
|
PropertySelectAjax,
|
||||||
PropertySelectLieu,
|
PropertySelectLieu,
|
||||||
@ -281,19 +327,18 @@ export default {
|
|||||||
NcButton,
|
NcButton,
|
||||||
EditIcon,
|
EditIcon,
|
||||||
},
|
},
|
||||||
mixins: [
|
mixins: [EditorMixin],
|
||||||
EditorMixin,
|
|
||||||
],
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
placement: 'auto',
|
placement: "auto",
|
||||||
hasLocation: false,
|
hasLocation: false,
|
||||||
hasDescription: false,
|
hasDescription: false,
|
||||||
|
isCalendarPending: false,
|
||||||
boundaryElement: null,
|
boundaryElement: null,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isViewing: true,
|
isViewing: true,
|
||||||
defuntUrl: undefined,
|
defuntUrl: undefined,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
@ -304,7 +349,7 @@ export default {
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
showPopover() {
|
showPopover() {
|
||||||
return this.isVisible || this.widgetEventDetailsOpen
|
return this.isVisible || this.widgetEventDetailsOpen;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,7 +358,7 @@ export default {
|
|||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
isReadOnlyOrViewing() {
|
isReadOnlyOrViewing() {
|
||||||
return this.isReadOnly || this.isViewing || this.isWidget
|
return this.isReadOnly || this.isViewing || this.isWidget;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -322,123 +367,148 @@ export default {
|
|||||||
* @return {string}
|
* @return {string}
|
||||||
*/
|
*/
|
||||||
titleOrPlaceholder() {
|
titleOrPlaceholder() {
|
||||||
if (this.title === '' && this.isReadOnlyOrViewing && !this.isLoading) {
|
if (this.title === "" && this.isReadOnlyOrViewing && !this.isLoading) {
|
||||||
return t('calendar', 'Untitled event')
|
return t("calendar", "Untitled event");
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.title
|
return this.title;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
$route(to, from) {
|
$route(to, from) {
|
||||||
this.repositionPopover()
|
this.repositionPopover();
|
||||||
|
|
||||||
// Hide popover when changing the view until the user selects a slot again
|
// Hide popover when changing the view until the user selects a slot again
|
||||||
this.isVisible = to?.params.view === from?.params.view
|
this.isVisible = to?.params.view === from?.params.view;
|
||||||
},
|
},
|
||||||
calendarObjectInstance() {
|
calendarObjectInstance() {
|
||||||
this.hasLocation = false
|
this.hasLocation = false;
|
||||||
this.hasDescription = false
|
this.hasDescription = false;
|
||||||
|
|
||||||
if (typeof this.calendarObjectInstance.location === 'string' && this.calendarObjectInstance.location.trim() !== '') {
|
if (
|
||||||
this.hasLocation = true
|
typeof this.calendarObjectInstance.location === "string" &&
|
||||||
|
this.calendarObjectInstance.location.trim() !== ""
|
||||||
|
) {
|
||||||
|
this.hasLocation = true;
|
||||||
}
|
}
|
||||||
if (typeof this.calendarObjectInstance.description === 'string' && this.calendarObjectInstance.description.trim() !== '') {
|
if (
|
||||||
this.hasDescription = true
|
typeof this.calendarObjectInstance.description === "string" &&
|
||||||
|
this.calendarObjectInstance.description.trim() !== ""
|
||||||
|
) {
|
||||||
|
this.hasDescription = true;
|
||||||
}
|
}
|
||||||
if(this.calendarObjectInstance) {
|
if (this.calendarObjectInstance) {
|
||||||
this.getDefuntUrl()
|
this.getDefuntUrl();
|
||||||
|
this.isCalendarPending = this.calendarObjectInstance.isCalendarPending ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
isNew: {
|
isNew: {
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler(isNew) {
|
handler(isNew) {
|
||||||
// New events should be editable from the start
|
// New events should be editable from the start
|
||||||
this.isViewing = !isNew
|
this.isViewing = !isNew;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
if (this.isWidget) {
|
if (this.isWidget) {
|
||||||
const objectId = this.widgetEventDetails.object
|
const objectId = this.widgetEventDetails.object;
|
||||||
const recurrenceId = this.widgetEventDetails.recurrenceId
|
const recurrenceId = this.widgetEventDetails.recurrenceId;
|
||||||
await this.$store.dispatch('getCalendarObjectInstanceByObjectIdAndRecurrenceId', { objectId, recurrenceId })
|
await this.$store.dispatch(
|
||||||
this.calendarId = this.calendarObject.calendarId
|
"getCalendarObjectInstanceByObjectIdAndRecurrenceId",
|
||||||
this.isLoading = false
|
{ objectId, recurrenceId }
|
||||||
|
);
|
||||||
|
this.calendarId = this.calendarObject.calendarId;
|
||||||
|
this.isLoading = false;
|
||||||
}
|
}
|
||||||
this.boundaryElement = this.isWidget ? document.querySelector('.fc') : document.querySelector('#app-content-vue > .fc')
|
this.boundaryElement = this.isWidget
|
||||||
window.addEventListener('keydown', this.keyboardCloseEditor)
|
? document.querySelector(".fc")
|
||||||
window.addEventListener('keydown', this.keyboardSaveEvent)
|
: document.querySelector("#app-content-vue > .fc");
|
||||||
window.addEventListener('keydown', this.keyboardDeleteEvent)
|
window.addEventListener("keydown", this.keyboardCloseEditor);
|
||||||
window.addEventListener('keydown', this.keyboardDuplicateEvent)
|
window.addEventListener("keydown", this.keyboardSaveEvent);
|
||||||
|
window.addEventListener("keydown", this.keyboardDeleteEvent);
|
||||||
|
window.addEventListener("keydown", this.keyboardDuplicateEvent);
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.repositionPopover()
|
this.repositionPopover();
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
window.removeEventListener('keydown', this.keyboardCloseEditor)
|
window.removeEventListener("keydown", this.keyboardCloseEditor);
|
||||||
window.removeEventListener('keydown', this.keyboardSaveEvent)
|
window.removeEventListener("keydown", this.keyboardSaveEvent);
|
||||||
window.removeEventListener('keydown', this.keyboardDeleteEvent)
|
window.removeEventListener("keydown", this.keyboardDeleteEvent);
|
||||||
window.removeEventListener('keydown', this.keyboardDuplicateEvent)
|
window.removeEventListener("keydown", this.keyboardDuplicateEvent);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
showMore() {
|
showMore() {
|
||||||
// Do not save yet
|
// Do not save yet
|
||||||
this.requiresActionOnRouteLeave = false
|
this.requiresActionOnRouteLeave = false;
|
||||||
|
|
||||||
const params = Object.assign({}, this.$route.params)
|
const params = Object.assign({}, this.$route.params);
|
||||||
if (this.isNew) {
|
if (this.isNew) {
|
||||||
this.$router.push({ name: 'NewSidebarView', params })
|
this.$router.push({ name: "NewSidebarView", params });
|
||||||
} else {
|
} else {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: getPrefixedRoute(this.$route.name, 'EditSidebarView'),
|
name: getPrefixedRoute(this.$route.name, "EditSidebarView"),
|
||||||
params,
|
params,
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getDomElementForPopover(isNew, route) {
|
getDomElementForPopover(isNew, route) {
|
||||||
let matchingDomObject
|
let matchingDomObject;
|
||||||
if (this.isWidget) {
|
if (this.isWidget) {
|
||||||
const objectId = this.widgetEventDetails.object
|
const objectId = this.widgetEventDetails.object;
|
||||||
const recurrenceId = this.widgetEventDetails.recurrenceId
|
const recurrenceId = this.widgetEventDetails.recurrenceId;
|
||||||
|
|
||||||
matchingDomObject = this.widgetRef.querySelector(`.fc-event[data-object-id="${objectId}"][data-recurrence-id="${recurrenceId}"]`)
|
matchingDomObject = this.widgetRef.querySelector(
|
||||||
this.placement = 'auto'
|
`.fc-event[data-object-id="${objectId}"][data-recurrence-id="${recurrenceId}"]`
|
||||||
|
);
|
||||||
|
this.placement = "auto";
|
||||||
} else if (isNew) {
|
} else if (isNew) {
|
||||||
matchingDomObject = document.querySelector('.fc-highlight')
|
matchingDomObject = document.querySelector(".fc-highlight");
|
||||||
this.placement = 'auto'
|
this.placement = "auto";
|
||||||
|
|
||||||
if (!matchingDomObject) {
|
if (!matchingDomObject) {
|
||||||
matchingDomObject = document.querySelector('.fc-event[data-is-new="yes"]')
|
matchingDomObject = document.querySelector(
|
||||||
|
'.fc-event[data-is-new="yes"]'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const objectId = route.params.object
|
const objectId = route.params.object;
|
||||||
const recurrenceId = route.params.recurrenceId
|
const recurrenceId = route.params.recurrenceId;
|
||||||
|
|
||||||
matchingDomObject = document.querySelector(`.fc-event[data-object-id="${objectId}"][data-recurrence-id="${recurrenceId}"]`)
|
matchingDomObject = document.querySelector(
|
||||||
this.placement = 'auto'
|
`.fc-event[data-object-id="${objectId}"][data-recurrence-id="${recurrenceId}"]`
|
||||||
|
);
|
||||||
|
this.placement = "auto";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!matchingDomObject) {
|
if (!matchingDomObject) {
|
||||||
matchingDomObject = document.querySelector('#app-navigation-vue')
|
matchingDomObject = document.querySelector("#app-navigation-vue");
|
||||||
this.placement = 'right'
|
this.placement = "right";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!matchingDomObject) {
|
if (!matchingDomObject) {
|
||||||
matchingDomObject = document.querySelector('body')
|
matchingDomObject = document.querySelector("body");
|
||||||
this.placement = 'auto'
|
this.placement = "auto";
|
||||||
}
|
}
|
||||||
|
|
||||||
console.info('getDomElementForPopover', matchingDomObject, this.placement)
|
console.info(
|
||||||
return matchingDomObject
|
"getDomElementForPopover",
|
||||||
|
matchingDomObject,
|
||||||
|
this.placement
|
||||||
|
);
|
||||||
|
return matchingDomObject;
|
||||||
},
|
},
|
||||||
repositionPopover() {
|
repositionPopover() {
|
||||||
const isNew = this.isWidget ? false : this.$route.name === 'NewPopoverView'
|
const isNew = this.isWidget
|
||||||
this.$refs.popover.$children[0].$refs.reference = this.getDomElementForPopover(isNew, this.$route)
|
? false
|
||||||
this.$refs.popover.$children[0].$refs.popper.dispose()
|
: this.$route.name === "NewPopoverView";
|
||||||
this.$refs.popover.$children[0].$refs.popper.init()
|
this.$refs.popover.$children[0].$refs.reference =
|
||||||
|
this.getDomElementForPopover(isNew, this.$route);
|
||||||
|
this.$refs.popover.$children[0].$refs.popper.dispose();
|
||||||
|
this.$refs.popover.$children[0].$refs.popper.init();
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Save changes and leave when creating a new event or return to viewing mode when editing
|
* Save changes and leave when creating a new event or return to viewing mode when editing
|
||||||
@ -450,32 +520,46 @@ export default {
|
|||||||
async saveAndView(thisAndAllFuture) {
|
async saveAndView(thisAndAllFuture) {
|
||||||
// Transitioning from new to edit routes is not implemented for now
|
// Transitioning from new to edit routes is not implemented for now
|
||||||
if (this.isNew) {
|
if (this.isNew) {
|
||||||
await this.saveAndLeave(thisAndAllFuture)
|
await this.saveAndLeave(thisAndAllFuture);
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isViewing = true
|
this.isViewing = true;
|
||||||
try {
|
try {
|
||||||
await this.save(thisAndAllFuture)
|
await this.save(thisAndAllFuture);
|
||||||
this.requiresActionOnRouteLeave = false
|
this.requiresActionOnRouteLeave = false;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.isViewing = false
|
this.isViewing = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveAsPendingCalendarEvent() {
|
||||||
|
if (this.isNew) {
|
||||||
|
await this.savePendingCalendar(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isViewing = true;
|
||||||
|
try {
|
||||||
|
await this.savePendingCalendar(false);
|
||||||
|
this.requiresActionOnRouteLeave = false;
|
||||||
|
} catch (error) {
|
||||||
|
this.isViewing = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
addArticle(article) {
|
addArticle(article) {
|
||||||
if(this.description && this.description !== "") {
|
if (this.description && this.description !== "") {
|
||||||
this.updateDescription(this.description + ";" + article);
|
this.updateDescription(this.description + ";" + article);
|
||||||
} else {
|
} else {
|
||||||
this.updateDescription(article);
|
this.updateDescription(article);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
removeArticle(article) {
|
removeArticle(article) {
|
||||||
if(this.description && this.description !== "") {
|
if (this.description && this.description !== "") {
|
||||||
let values = [];
|
let values = [];
|
||||||
let items = this.description.split(';');
|
let items = this.description.split(";");
|
||||||
items.forEach((item) => {
|
items.forEach((item) => {
|
||||||
if(item !== article) {
|
if (item !== article) {
|
||||||
values.push(item);
|
values.push(item);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -484,19 +568,22 @@ export default {
|
|||||||
this.updateDescription(null);
|
this.updateDescription(null);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getDefuntUrl(){
|
getDefuntUrl() {
|
||||||
const url = generateUrl(`/apps/gestion/api/getDefundIdByCalendarUuid/${this.calendarObjectInstance.eventComponent.uid}`)
|
const url = generateUrl(
|
||||||
|
`/apps/gestion/api/getDefundIdByCalendarUuid/${this.calendarObjectInstance.eventComponent.uid}`
|
||||||
|
);
|
||||||
axios.get(url).then((response) => {
|
axios.get(url).then((response) => {
|
||||||
console.log(this.calendarObjectInstance)
|
console.log(this.calendarObjectInstance);
|
||||||
if(response.data.id){
|
if (response.data.id) {
|
||||||
this.defuntUrl = generateUrl(`/apps/gestion/defunt/${response.data.id}/show`)
|
this.defuntUrl = generateUrl(
|
||||||
|
`/apps/gestion/defunt/${response.data.id}/show`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
})
|
|
||||||
},
|
},
|
||||||
viewDefunt(){
|
viewDefunt() {
|
||||||
window.open(this.defuntUrl, '_blank')
|
window.open(this.defuntUrl, "_blank");
|
||||||
}
|
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -177,5 +177,9 @@ return [
|
|||||||
|
|
||||||
// API
|
// API
|
||||||
['name' => 'api#getDefundIdByCalendarUuid', 'url' => '/api/getDefundIdByCalendarUuid/{uuid}', 'verb' => 'GET'],
|
['name' => 'api#getDefundIdByCalendarUuid', 'url' => '/api/getDefundIdByCalendarUuid/{uuid}', 'verb' => 'GET'],
|
||||||
|
|
||||||
|
//invoice controller
|
||||||
|
['name' => 'invoice#sendInvoicePdfViaMail', 'url' => '/invoice/{factureId}/sendInvoicePdfViaMail', 'verb' => 'POST'],
|
||||||
|
['name' => 'invoice#getInvoicePdfContent', 'url' => '/invoice/{factureId}/getInvoicePdfContent', 'verb' => 'GET'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,3 +1,75 @@
|
|||||||
|
/*!
|
||||||
|
* Bootstrap backdrop.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap base-component.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap component-functions.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap config.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap data.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap event-handler.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap focustrap.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap index.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap manipulator.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap modal.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap scrollbar.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Bootstrap selector-engine.js v5.2.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Sizzle CSS Selector Engine v2.3.9
|
* Sizzle CSS Selector Engine v2.3.9
|
||||||
* https://sizzlejs.com/
|
* https://sizzlejs.com/
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
9
gestion/lib/Constants/VCalendarPropertyConstant.php
Normal file
9
gestion/lib/Constants/VCalendarPropertyConstant.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace OCA\Gestion\Constants;
|
||||||
|
abstract class VCalendarPropertyConstant
|
||||||
|
{
|
||||||
|
const PROPERTY_IS_LEAVE = "ISLEAVE";
|
||||||
|
const PROPERTY_IS_CALENDAR_PENDING = "ISCALENDARPENDING";
|
||||||
|
}
|
||||||
99
gestion/lib/Controller/InvoiceController.php
Normal file
99
gestion/lib/Controller/InvoiceController.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
namespace OCA\Gestion\Controller;
|
||||||
|
|
||||||
|
use OCA\Gestion\Db\Bdd;
|
||||||
|
use OCA\Gestion\Service\InvoicePdfService;
|
||||||
|
use OCP\AppFramework\Controller;
|
||||||
|
use OCP\AppFramework\Http\DataResponse;
|
||||||
|
use OCP\DB\Exception;
|
||||||
|
use OCP\Files\IRootFolder;
|
||||||
|
use OCP\IRequest;
|
||||||
|
use OCP\Mail\IMailer;
|
||||||
|
|
||||||
|
class InvoiceController extends Controller
|
||||||
|
{
|
||||||
|
private Bdd $gestionRepository;
|
||||||
|
private InvoicePdfService $invoicePdfService;
|
||||||
|
private $rootFolder;
|
||||||
|
private $mailer;
|
||||||
|
private $currentUserIdNextcloud;
|
||||||
|
private $storage;
|
||||||
|
public function __construct(
|
||||||
|
$UserId,
|
||||||
|
$AppName,
|
||||||
|
IRequest $request,
|
||||||
|
Bdd $bdd,
|
||||||
|
InvoicePdfService $invoicePdfService,
|
||||||
|
IRootFolder $rootFolder,
|
||||||
|
IMailer $mailer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$this->currentUserIdNextcloud = $UserId;
|
||||||
|
$this->invoicePdfService = $invoicePdfService;
|
||||||
|
$this->rootFolder = $rootFolder;
|
||||||
|
$this->mailer = $mailer;
|
||||||
|
$this->gestionRepository = $bdd;
|
||||||
|
try{
|
||||||
|
$this->storage = $rootFolder->getUserFolder($this->currentUserIdNextcloud);
|
||||||
|
}catch(\OC\User\NoUserException $e){
|
||||||
|
|
||||||
|
}
|
||||||
|
parent::__construct($AppName, request: $request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @NoAdminRequired
|
||||||
|
* @NoCSRFRequired
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function getInvoicePdfContent($factureId){
|
||||||
|
$facture = $this->gestionRepository->getFactureByFactureId($factureId);
|
||||||
|
if($facture == null)
|
||||||
|
{
|
||||||
|
return new DataResponse("La facture n'existe pas", 404, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
$factureGeneratedResponse = $this->invoicePdfService->generateFacturePdfByFactureId($factureId,$this->currentUserIdNextcloud);
|
||||||
|
if($factureGeneratedResponse == null){
|
||||||
|
return new DataResponse("La facture n'a pas été générée correctement", 404, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
$factureContent = base64_encode($factureGeneratedResponse['content']);
|
||||||
|
return new DataResponse([
|
||||||
|
"content" => $factureContent
|
||||||
|
], 200, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @NoAdminRequired
|
||||||
|
* @NoCSRFRequired
|
||||||
|
*/
|
||||||
|
public function sendInvoicePdfViaMail($factureId, $email = '')
|
||||||
|
{
|
||||||
|
$facture = $this->gestionRepository->getFactureByFactureId($factureId);
|
||||||
|
if($facture == null)
|
||||||
|
{
|
||||||
|
return new DataResponse("La facture n'existe pas", 404, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
$factureClientMail = $this->gestionRepository->getFactureClientMailByFactureId($factureId);
|
||||||
|
if($factureClientMail == null){
|
||||||
|
return new DataResponse("Le mail de la facture n'existe pas", 404, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
$factureGeneratedResponse = $this->invoicePdfService->generateFacturePdfByFactureId($factureId,$this->currentUserIdNextcloud);
|
||||||
|
if($factureGeneratedResponse == null){
|
||||||
|
return new DataResponse("La facture n'a pas été générée correctement", 404, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
$factureContent = $factureGeneratedResponse["content"];
|
||||||
|
try {
|
||||||
|
$message = $this->mailer->createMessage();
|
||||||
|
$message->setTo(recipients: [$email => "Facture"]);
|
||||||
|
$content = $this->mailer->createAttachment($factureContent, "Facture.pdf", "application/pdf");
|
||||||
|
$message->attach($content);
|
||||||
|
$message->setSubject("Facture");
|
||||||
|
$message->setPlainBody("Veuiller trouver ci-joint votre facture");
|
||||||
|
$this->mailer->send($message);
|
||||||
|
$this->gestionRepository->setFactureSentDate($factureId);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return new DataResponse("Veuillez configurer le serveur SMTP sur nextcloud ?", 500, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
return new DataResponse("E-mail envoyé avec succès à ".$email.".", 200, ['Content-Type' => 'application/json']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -36,7 +36,7 @@ date_default_timezone_set('Europe/Paris');
|
|||||||
|
|
||||||
class PageController extends Controller {
|
class PageController extends Controller {
|
||||||
private $idNextcloud;
|
private $idNextcloud;
|
||||||
private $myDb;
|
private Bdd $myDb;
|
||||||
// private $src_path = "/var/www/html/apps/gestion/img/";
|
// private $src_path = "/var/www/html/apps/gestion/img/";
|
||||||
private $src_path = "/var/www/html/custom_apps/gestion/img/";
|
private $src_path = "/var/www/html/custom_apps/gestion/img/";
|
||||||
|
|
||||||
@ -1580,6 +1580,29 @@ class PageController extends Controller {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function sendAttachmentToClientByDefunt($defuntId, $ff_pdf, $to,$subject, $body, $addName = false){
|
||||||
|
$devis = $this->myDb->getDevisOfDefunt($defuntId);
|
||||||
|
if($devis != null){
|
||||||
|
// try {
|
||||||
|
$client_email = $to;
|
||||||
|
$client_nom = $devis['client_nom'];
|
||||||
|
$data = $this->storage->get($ff_pdf)->getContent();
|
||||||
|
$message = $this->mailer->createMessage();
|
||||||
|
$message->setTo(recipients: [$client_email => $client_nom]);
|
||||||
|
// $message->setFrom([$client_email => $client_nom]);
|
||||||
|
$content = $this->mailer->createAttachment($data, basename($ff_pdf), "application/pdf");
|
||||||
|
$message->attach($content);
|
||||||
|
$message->setSubject($subject);
|
||||||
|
$body_text = $addName ? $body." de ".$devis['defunt_nom']: $body;
|
||||||
|
$message->setPlainBody("Bonjour.\n\n".$body_text."!\n\nCordialement.");
|
||||||
|
$this->mailer->send($message);
|
||||||
|
return new DataResponse("", 200, ['Content-Type' => 'application/json']);
|
||||||
|
// } catch (Exception $e) {
|
||||||
|
// return new DataResponse("Is your global mail server configured in Nextcloud ?", 500, ['Content-Type' => 'application/json']);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @NoAdminRequired
|
* @NoAdminRequired
|
||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
@ -1861,7 +1884,7 @@ class PageController extends Controller {
|
|||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
*/
|
*/
|
||||||
public function getAnnualTurnoverPerMonthNoVat(){
|
public function getAnnualTurnoverPerMonthNoVat(){
|
||||||
return $this->myDb->getAnnualTurnoverPerMonthNoVat($this->idNextcloud);
|
return $this->myDb->retrieveTotalInvoicesForTheYear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2005,7 +2028,7 @@ class PageController extends Controller {
|
|||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
* @param string $numdefunt
|
* @param string $numdefunt
|
||||||
*/
|
*/
|
||||||
public function saveRapportSoin($numdefunt){
|
public function saveRapportSoin($numdefunt, $email = ''){
|
||||||
$defaultConfig = json_decode($this->myDb->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD));
|
$defaultConfig = json_decode($this->myDb->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD));
|
||||||
$defunt = json_decode($this->myDb->getOneDefunt($numdefunt, $this->idNextcloud))[0];
|
$defunt = json_decode($this->myDb->getOneDefunt($numdefunt, $this->idNextcloud))[0];
|
||||||
$observations = json_decode($this->myDb->getListObservations($numdefunt, $this->idNextcloud));
|
$observations = json_decode($this->myDb->getListObservations($numdefunt, $this->idNextcloud));
|
||||||
@ -2252,6 +2275,11 @@ class PageController extends Controller {
|
|||||||
$file_pdf = $this->storage->get($ff_pdf);
|
$file_pdf = $this->storage->get($ff_pdf);
|
||||||
$file_pdf->putContent($pdfContent);
|
$file_pdf->putContent($pdfContent);
|
||||||
|
|
||||||
|
if($ff_pdf != null && trim($email) != ''){
|
||||||
|
//send email
|
||||||
|
$this->sendAttachmentToClientByDefunt($defunt->id, $ff_pdf, $email,"Rapport soins", "Veuillez trouver ci-joint le rapport de soins de ".$nomDefunt.".");
|
||||||
|
}
|
||||||
|
|
||||||
$res = array();
|
$res = array();
|
||||||
$res['path'] = $folderDestination;
|
$res['path'] = $folderDestination;
|
||||||
return json_encode($res);
|
return json_encode($res);
|
||||||
@ -2291,7 +2319,7 @@ class PageController extends Controller {
|
|||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
* @param string $numdefunt
|
* @param string $numdefunt
|
||||||
*/
|
*/
|
||||||
public function saveRapportBijoux($numdefunt,$withPhotos = false){
|
public function saveRapportBijoux($numdefunt,$withPhotos = false, $email = ''){
|
||||||
if($withPhotos != null && $withPhotos == 1){
|
if($withPhotos != null && $withPhotos == 1){
|
||||||
$withPhotos = true;
|
$withPhotos = true;
|
||||||
}
|
}
|
||||||
@ -2428,6 +2456,11 @@ class PageController extends Controller {
|
|||||||
$file_pdf = $this->storage->get($ff_pdf);
|
$file_pdf = $this->storage->get($ff_pdf);
|
||||||
$file_pdf->putContent($pdfContent);
|
$file_pdf->putContent($pdfContent);
|
||||||
|
|
||||||
|
if($ff_pdf != null && trim($email) != ''){
|
||||||
|
//send email
|
||||||
|
$this->sendAttachmentToClientByDefunt($defunt->id, $ff_pdf, $email,"Rapport des bijoux", "Veuillez trouver ci-joint le rapport des bijoux de ".$nomDefunt.".");
|
||||||
|
}
|
||||||
|
|
||||||
$res = array();
|
$res = array();
|
||||||
$res['path'] = $folderDestination;
|
$res['path'] = $folderDestination;
|
||||||
return json_encode($res);
|
return json_encode($res);
|
||||||
@ -2504,8 +2537,8 @@ class PageController extends Controller {
|
|||||||
|
|
||||||
public function exportFactureToPdf($factureId){
|
public function exportFactureToPdf($factureId){
|
||||||
try{
|
try{
|
||||||
$factureFilenames = $this->invoicePdfService->generateFacturePdfByFactureId($factureId,$this->idNextcloud);
|
$factureGeneratedResponse = $this->invoicePdfService->generateFacturePdfByFactureId($factureId,$this->idNextcloud);
|
||||||
return json_encode($factureFilenames);
|
return json_encode($factureGeneratedResponse["filenames"]);
|
||||||
}
|
}
|
||||||
catch(\OCP\Files\NotFoundException $e) { }
|
catch(\OCP\Files\NotFoundException $e) { }
|
||||||
|
|
||||||
@ -2636,9 +2669,13 @@ class PageController extends Controller {
|
|||||||
* @param int $defuntId
|
* @param int $defuntId
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function exportCareCertificate($defuntId){
|
public function exportCareCertificate($defuntId, $email = ''){
|
||||||
try{
|
try{
|
||||||
$careCertificateFilename = $this->certificateService->generateCareCertificate($defuntId,$this->idNextcloud);
|
$careCertificateFilename = $this->certificateService->generateCareCertificate($defuntId,$this->idNextcloud);
|
||||||
|
if($careCertificateFilename != null && trim($email) != '' ){
|
||||||
|
//send email
|
||||||
|
$this->sendAttachmentToClientByDefunt($defuntId, $careCertificateFilename, $email,"Attestation de soins", " Veuillez trouver ci-joint l'attestation de soins ", true);
|
||||||
|
}
|
||||||
return $careCertificateFilename;
|
return $careCertificateFilename;
|
||||||
}
|
}
|
||||||
catch(\OCP\Files\NotFoundException $e) { }
|
catch(\OCP\Files\NotFoundException $e) { }
|
||||||
@ -2781,9 +2818,14 @@ class PageController extends Controller {
|
|||||||
* @param int $defuntId
|
* @param int $defuntId
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function saveAttestationPacemaker($defuntId){
|
public function saveAttestationPacemaker($defuntId, $email = ''){
|
||||||
try{
|
try{
|
||||||
$careCertificateFilename = $this->certificateService->generatePacemakerCertificate($defuntId,$this->idNextcloud);
|
$careCertificateFilename = $this->certificateService->generatePacemakerCertificate($defuntId,$this->idNextcloud);
|
||||||
|
if($careCertificateFilename != null && trim($email) != ''){
|
||||||
|
//send email
|
||||||
|
$this->sendAttachmentToClientByDefunt($defuntId, $careCertificateFilename, $email,"Attestation pacemaker", "Veuillez trouver ci-joint l'attestation de pacemaker ", true);
|
||||||
|
|
||||||
|
}
|
||||||
return $careCertificateFilename;
|
return $careCertificateFilename;
|
||||||
}
|
}
|
||||||
catch(\OCP\Files\NotFoundException $e) { }
|
catch(\OCP\Files\NotFoundException $e) { }
|
||||||
@ -2983,6 +3025,11 @@ class PageController extends Controller {
|
|||||||
public function factureGroupDetails($numfacture){
|
public function factureGroupDetails($numfacture){
|
||||||
$this->denyIfNotAdmin();
|
$this->denyIfNotAdmin();
|
||||||
$facture = $this->myDb->getFactureGroupByFactureIdWithDetails($numfacture);
|
$facture = $this->myDb->getFactureGroupByFactureIdWithDetails($numfacture);
|
||||||
|
$facture["path_to_file"] = $this->idNextcloud.'/'.FileExportHelpers::GetFactureGroupFileFullPath(
|
||||||
|
clientName:$facture['group_name'],
|
||||||
|
factureNum: $facture['num'],
|
||||||
|
facturationDate: $facture['date_paiement']
|
||||||
|
);
|
||||||
return new TemplateResponse('gestion', 'factureGroupDetails', array('groups' => $this->groups, 'user' => $this->user, 'path' => $this->idNextcloud,
|
return new TemplateResponse('gestion', 'factureGroupDetails', array('groups' => $this->groups, 'user' => $this->user, 'path' => $this->idNextcloud,
|
||||||
'configuration'=> $this->getConfiguration(),
|
'configuration'=> $this->getConfiguration(),
|
||||||
'facture'=>json_decode(json_encode($facture)),
|
'facture'=>json_decode(json_encode($facture)),
|
||||||
|
|||||||
@ -370,6 +370,8 @@ class Bdd {
|
|||||||
facture.status_paiement,
|
facture.status_paiement,
|
||||||
facture_client.nom as facture_client_name,
|
facture_client.nom as facture_client_name,
|
||||||
facture_client_group_facturation.group_facturation_name as facture_group_name,
|
facture_client_group_facturation.group_facturation_name as facture_group_name,
|
||||||
|
facture.document_generated_date as facture_document_generated_date,
|
||||||
|
facture.document_sent_date as facture_document_sent_date,
|
||||||
devis.num as dnum,
|
devis.num as dnum,
|
||||||
devis.comment as dcomment,
|
devis.comment as dcomment,
|
||||||
client.entreprise,
|
client.entreprise,
|
||||||
@ -408,6 +410,8 @@ class Bdd {
|
|||||||
.$this->tableprefix."facture.facture_type, "
|
.$this->tableprefix."facture.facture_type, "
|
||||||
.$this->tableprefix."facture.fk_client_id as facture_client_id, "
|
.$this->tableprefix."facture.fk_client_id as facture_client_id, "
|
||||||
.$this->tableprefix."facture.fk_client_group_facturation_id as facture_client_group_facturation_id, "
|
.$this->tableprefix."facture.fk_client_group_facturation_id as facture_client_group_facturation_id, "
|
||||||
|
.$this->tableprefix."facture.document_generated_date as facture_document_generated_date, "
|
||||||
|
.$this->tableprefix."facture.document_sent_date as facture_document_sent_date, "
|
||||||
.$this->tableprefix."devis.num as dnum, ".$this->tableprefix."devis.comment as dcomment, date_paiement, type_paiement, id_devis, entreprise, "
|
.$this->tableprefix."devis.num as dnum, ".$this->tableprefix."devis.comment as dcomment, date_paiement, type_paiement, id_devis, entreprise, "
|
||||||
.$this->tableprefix."facture.version, status_paiement,"
|
.$this->tableprefix."facture.version, status_paiement,"
|
||||||
.$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, "
|
.$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, "
|
||||||
@ -597,18 +601,22 @@ class Bdd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getOneFacture($numfacture, $idNextcloud){
|
public function getOneFacture($numfacture, $idNextcloud){
|
||||||
// $sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, nom, prenom, entreprise FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id AND ".$this->tableprefix."facture.id_nextcloud = ".$this->tableprefix."devis.id_nextcloud) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id AND ".$this->tableprefix."devis.id_nextcloud = ".$this->tableprefix."client.id_nextcloud WHERE ".$this->tableprefix."facture.id = ? AND ".$this->tableprefix."facture.id_nextcloud = ?";
|
|
||||||
$sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, "
|
$sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, "
|
||||||
.$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom, prenom, entreprise,"
|
.$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom, prenom, entreprise,"
|
||||||
.$this->tableprefix."devis.comment as dcomment,".$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin,"
|
.$this->tableprefix."devis.comment as dcomment,".$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin,"
|
||||||
.$this->tableprefix."defunt.nom as nom_defunt, "
|
.$this->tableprefix."defunt.nom as nom_defunt, "
|
||||||
.$this->tableprefix."devis.order_number as order_number, "
|
.$this->tableprefix."devis.order_number as order_number, "
|
||||||
.$this->tableprefix."devis.case_number as case_number, "
|
.$this->tableprefix."devis.case_number as case_number, "
|
||||||
|
.$this->tableprefix."client.id as client_id, "
|
||||||
|
.$this->tableprefix."client.mail as client_mail, "
|
||||||
|
.$this->tableprefix."client_group_facturation.id as group_client_id, "
|
||||||
|
.$this->tableprefix."client_group_facturation.email as group_client_mail, "
|
||||||
.$this->tableprefix."facture_payment_type.facture_payment_type_label as facture_payment_type_label
|
.$this->tableprefix."facture_payment_type.facture_payment_type_label as facture_payment_type_label
|
||||||
FROM (".$this->tableprefix."facture
|
FROM (".$this->tableprefix."facture
|
||||||
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id
|
||||||
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id)
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id)
|
||||||
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group_facturation on ".$this->tableprefix."client.fk_client_group_facturation_id = ".$this->tableprefix."client_group_facturation.id
|
||||||
LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
||||||
LEFT JOIN ".$this->tableprefix."facture_payment_type on ".$this->tableprefix."facture.fk_facture_payment_type_id = ".$this->tableprefix."facture_payment_type.id
|
LEFT JOIN ".$this->tableprefix."facture_payment_type on ".$this->tableprefix."facture.fk_facture_payment_type_id = ".$this->tableprefix."facture_payment_type.id
|
||||||
WHERE ".$this->tableprefix."facture.id = ?";
|
WHERE ".$this->tableprefix."facture.id = ?";
|
||||||
@ -787,10 +795,13 @@ class Bdd {
|
|||||||
.$this->tableprefix."thanato.date_habilitation, "
|
.$this->tableprefix."thanato.date_habilitation, "
|
||||||
.$this->tableprefix."thanato.reference as reference_habilitation, "
|
.$this->tableprefix."thanato.reference as reference_habilitation, "
|
||||||
.$this->tableprefix."lieu.adresse as adresse_lieu, "
|
.$this->tableprefix."lieu.adresse as adresse_lieu, "
|
||||||
|
.$this->tableprefix."client.mail as client_mail, "
|
||||||
|
.$this->tableprefix."client_group_facturation.email as client_group_mail, "
|
||||||
.$this->tableprefix."lieu.nom as nom_lieu
|
.$this->tableprefix."lieu.nom as nom_lieu
|
||||||
FROM ".$this->tableprefix."defunt
|
FROM ".$this->tableprefix."defunt
|
||||||
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
||||||
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group_facturation on ".$this->tableprefix."client.fk_client_group_facturation_id = ".$this->tableprefix."client_group_facturation.id
|
||||||
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
||||||
LEFT JOIN ".$this->tableprefix."thanato on ".$this->tableprefix."devis.id_thanato = ".$this->tableprefix."thanato.id
|
LEFT JOIN ".$this->tableprefix."thanato on ".$this->tableprefix."devis.id_thanato = ".$this->tableprefix."thanato.id
|
||||||
WHERE ".$this->tableprefix."defunt.id = ?";
|
WHERE ".$this->tableprefix."defunt.id = ?";
|
||||||
@ -2051,6 +2062,43 @@ class Bdd {
|
|||||||
return $this->execSQL($sql, array());
|
return $this->execSQL($sql, array());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function retrieveTotalInvoicesForTheYear(){
|
||||||
|
$sql = "SELECT
|
||||||
|
EXTRACT(YEAR FROM facture.date_paiement) AS y,
|
||||||
|
EXTRACT(MONTH FROM facture.date_paiement) AS m,
|
||||||
|
SUM(
|
||||||
|
COALESCE(client_group_discount.ht_amount,produit.prix_unitaire)
|
||||||
|
* produit_devis.quantite
|
||||||
|
) AS total
|
||||||
|
FROM ".$this->tableprefix."facture AS facture
|
||||||
|
JOIN ".$this->tableprefix."devis AS devis
|
||||||
|
ON MONTH(facture.date_paiement) = MONTH(devis.date) AND
|
||||||
|
YEAR(facture.date_paiement) = YEAR(devis.date)
|
||||||
|
JOIN ".$this->tableprefix."produit_devis AS produit_devis
|
||||||
|
ON devis.id = produit_devis.devis_id
|
||||||
|
JOIN ".$this->tableprefix."produit AS produit
|
||||||
|
ON produit_devis.produit_id = produit.id
|
||||||
|
JOIN ".$this->tableprefix."client AS client
|
||||||
|
ON devis.id_client = client.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group AS client_group
|
||||||
|
ON client.fk_client_group_id = client_group.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group_discount AS client_group_discount
|
||||||
|
ON client_group.id = client_group_discount.fk_client_group_id
|
||||||
|
AND produit.id = client_group_discount.fk_produit_id
|
||||||
|
WHERE
|
||||||
|
(devis.mentions = ? OR devis.mentions = ?)
|
||||||
|
GROUP BY
|
||||||
|
EXTRACT(YEAR FROM facture.date_paiement),
|
||||||
|
EXTRACT(MONTH FROM facture.date_paiement)
|
||||||
|
ORDER BY
|
||||||
|
EXTRACT(YEAR FROM facture.date_paiement) DESC,
|
||||||
|
EXTRACT(MONTH FROM facture.date_paiement);";
|
||||||
|
return $this->execSQL($sql, [
|
||||||
|
DevisMentionConstant::FACTURED,
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Annual turnover per month without VAT
|
* Annual turnover per month without VAT
|
||||||
*/
|
*/
|
||||||
@ -2082,7 +2130,7 @@ class Bdd {
|
|||||||
ORDER BY
|
ORDER BY
|
||||||
EXTRACT(YEAR FROM facture.date_paiement) DESC,
|
EXTRACT(YEAR FROM facture.date_paiement) DESC,
|
||||||
EXTRACT(MONTH FROM facture.date_paiement);";
|
EXTRACT(MONTH FROM facture.date_paiement);";
|
||||||
return $this->execSQL($sql, array());
|
return $this->execSQLNoJsonReturn($sql, array());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatArticleAnnuel($idNextcloud, $annee) {
|
public function getStatArticleAnnuel($idNextcloud, $annee) {
|
||||||
@ -2102,10 +2150,16 @@ class Bdd {
|
|||||||
FROM ".$this->tableprefix."produit p
|
FROM ".$this->tableprefix."produit p
|
||||||
LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id
|
LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id
|
||||||
LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id
|
LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id
|
||||||
LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id
|
LEFT JOIN ".$this->tableprefix."facture f
|
||||||
WHERE YEAR(f.date_paiement) = ".$annee." AND pd.devis_id IS NOT NULL
|
ON MONTH(f.date_paiement) = MONTH(d.date) AND
|
||||||
|
YEAR(f.date_paiement) = YEAR(f.date)
|
||||||
|
WHERE YEAR(f.date_paiement) = ".$annee." AND pd.devis_id IS NOT NULL AND
|
||||||
|
(d.mentions = ? or d.mentions = ?)
|
||||||
GROUP BY p.id, p.reference;";
|
GROUP BY p.id, p.reference;";
|
||||||
return $this->execSQL($sql, array());
|
return $this->execSQL($sql, [
|
||||||
|
DevisMentionConstant::FACTURED,
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatSoinsThanatoAnnuel($idNextcloud, $annee) {
|
public function getStatSoinsThanatoAnnuel($idNextcloud, $annee) {
|
||||||
@ -2125,13 +2179,19 @@ class Bdd {
|
|||||||
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre
|
||||||
FROM ".$this->tableprefix."devis d
|
FROM ".$this->tableprefix."devis d
|
||||||
LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id
|
LEFT JOIN ".$this->tableprefix."facture f
|
||||||
|
ON MONTH(f.date_paiement) = MONTH(d.date) AND
|
||||||
|
YEAR(f.date_paiement) = YEAR(f.date)
|
||||||
LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
|
LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
|
||||||
WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL
|
WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL AND
|
||||||
|
(d.mentions = ? or d.mentions = ?)
|
||||||
AND thanato.id IS NOT NULL
|
AND thanato.id IS NOT NULL
|
||||||
GROUP BY nom_thanato, prenom_thanato
|
GROUP BY nom_thanato, prenom_thanato
|
||||||
ORDER BY nom_thanato;";
|
ORDER BY nom_thanato;";
|
||||||
return $this->execSQL($sql, array());
|
return $this->execSQL($sql, [
|
||||||
|
DevisMentionConstant::FACTURED,
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatSoinsThanatoWeekend($idNextcloud, $annee, $mois) {
|
public function getStatSoinsThanatoWeekend($idNextcloud, $annee, $mois) {
|
||||||
@ -2165,10 +2225,14 @@ class Bdd {
|
|||||||
WHERE
|
WHERE
|
||||||
MONTH(devis.date) = ".$mois."
|
MONTH(devis.date) = ".$mois."
|
||||||
AND YEAR(devis.date) = ".$annee."
|
AND YEAR(devis.date) = ".$annee."
|
||||||
AND DAYOFWEEK(devis.date) IN (1, 7)
|
AND DAYOFWEEK(devis.date) IN (1, 7) AND
|
||||||
|
(devis.mentions = ? or devis.mentions = ?)
|
||||||
GROUP BY
|
GROUP BY
|
||||||
thanato.id, nom_thanato, prenom_thanato;";
|
thanato.id, nom_thanato, prenom_thanato;";
|
||||||
return $this->execSQL($sql, array());
|
return $this->execSQL($sql, [
|
||||||
|
DevisMentionConstant::FACTURED,
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3496,6 +3560,8 @@ class Bdd {
|
|||||||
defunt.product_reference as defunt_product_reference,
|
defunt.product_reference as defunt_product_reference,
|
||||||
client.nom as client_nom,
|
client.nom as client_nom,
|
||||||
client.prenom as client_prenom,
|
client.prenom as client_prenom,
|
||||||
|
client.mail as client_mail,
|
||||||
|
client_group_facturation.email as client_group_mail,
|
||||||
client.entreprise as client_entreprise,
|
client.entreprise as client_entreprise,
|
||||||
client.adresse as client_adresse,
|
client.adresse as client_adresse,
|
||||||
thanato.nom as thanato_nom,
|
thanato.nom as thanato_nom,
|
||||||
@ -3506,6 +3572,7 @@ class Bdd {
|
|||||||
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
||||||
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
||||||
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group_facturation as client_group_facturation on client.fk_client_group_facturation_id = client_group_facturation.id
|
||||||
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
||||||
WHERE devis.id_defunt = ? ;";
|
WHERE devis.id_defunt = ? ;";
|
||||||
|
|
||||||
@ -3720,7 +3787,7 @@ class Bdd {
|
|||||||
if(empty($devisProducts)){
|
if(empty($devisProducts)){
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
$productMessage = ". ACTE A FAIRE : ";
|
$productMessage = "ACTE A FAIRE : ";
|
||||||
foreach($devisProducts as $product){
|
foreach($devisProducts as $product){
|
||||||
$productMessage.= html_entity_decode($product->produit_reference).", ";
|
$productMessage.= html_entity_decode($product->produit_reference).", ";
|
||||||
}
|
}
|
||||||
@ -3730,7 +3797,7 @@ class Bdd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function getDevisTalkRoomClientContent($clientPrenom){
|
private function getDevisTalkRoomClientContent($clientPrenom){
|
||||||
$message = ". Pour PF: ";
|
$message = "Pour PF: ";
|
||||||
$clientNameContent = "aucun";
|
$clientNameContent = "aucun";
|
||||||
$clientPrenomIsSet = $clientPrenom != null && $clientPrenom != "" && $clientPrenom != "-";
|
$clientPrenomIsSet = $clientPrenom != null && $clientPrenom != "" && $clientPrenom != "-";
|
||||||
if($clientPrenomIsSet){
|
if($clientPrenomIsSet){
|
||||||
@ -3749,20 +3816,25 @@ class Bdd {
|
|||||||
$devisDate = new Datetime($devis->date);
|
$devisDate = new Datetime($devis->date);
|
||||||
$devisDate = $devisDate->format('d/m/Y');
|
$devisDate = $devisDate->format('d/m/Y');
|
||||||
$message = "NOUVELLE INTERVENTION: ";
|
$message = "NOUVELLE INTERVENTION: ";
|
||||||
$message .= html_entity_decode($devis->nom_defunt) . ' ';
|
$message .= html_entity_decode($devis->nom_defunt);
|
||||||
$message .= 'le '.$devisDate. ' ';
|
$message .= '
|
||||||
|
le '.$devisDate;
|
||||||
$message .= 'à '.$devis->startTime. ' ';
|
$message .= 'à '.$devis->startTime. ' ';
|
||||||
$message .= 'à '.html_entity_decode($devis->lieu). ' '. html_entity_decode($devis->adresse_soin);
|
$message .= '
|
||||||
|
à '.html_entity_decode($devis->lieu). ' '. html_entity_decode($devis->adresse_soin);
|
||||||
|
|
||||||
$clientMessageContent = $this->getDevisTalkRoomClientContent($devis->prenom);
|
$clientMessageContent = $this->getDevisTalkRoomClientContent($devis->prenom);
|
||||||
$message .= $clientMessageContent;
|
$message .= '
|
||||||
|
'.$clientMessageContent;
|
||||||
$productMessage = $this->getDevisTalkRoomProductSectionMessage($devis->products);
|
$productMessage = $this->getDevisTalkRoomProductSectionMessage($devis->products);
|
||||||
$message .= $productMessage;
|
$message .= '
|
||||||
|
'.$productMessage;
|
||||||
$comment = "aucun";
|
$comment = "aucun";
|
||||||
if(strtolower($devis->comment) != "commentaire" && $devis->comment != ""){
|
if(strtolower($devis->comment) != "commentaire" && $devis->comment != ""){
|
||||||
$comment = html_entity_decode($devis->comment);
|
$comment = html_entity_decode($devis->comment);
|
||||||
}
|
}
|
||||||
$message .= ". COMMENTAIRES: ".$comment.". ";
|
$message .= "
|
||||||
|
COMMENTAIRES: ".$comment;
|
||||||
$locationCodes = [
|
$locationCodes = [
|
||||||
"Code portail" => $devis->portal_code,
|
"Code portail" => $devis->portal_code,
|
||||||
"Code alarme" => $devis->alarm_code,
|
"Code alarme" => $devis->alarm_code,
|
||||||
@ -3777,7 +3849,8 @@ class Bdd {
|
|||||||
$locationCodeMessageContent .= $label. ": ".$value.". ";
|
$locationCodeMessageContent .= $label. ": ".$value.". ";
|
||||||
}
|
}
|
||||||
$locationCodeMessageContent = trim($locationCodeMessageContent);
|
$locationCodeMessageContent = trim($locationCodeMessageContent);
|
||||||
$message .= $locationCodeMessageContent;
|
$message .= '
|
||||||
|
'.$locationCodeMessageContent;
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3791,6 +3864,8 @@ class Bdd {
|
|||||||
devis.id_defunt as defunt_id,
|
devis.id_defunt as defunt_id,
|
||||||
devis.num,
|
devis.num,
|
||||||
devis.comment,
|
devis.comment,
|
||||||
|
devis.mentions,
|
||||||
|
devis.date,
|
||||||
devis.id_lieu as lieu_id,
|
devis.id_lieu as lieu_id,
|
||||||
devis.id_client as client_id,
|
devis.id_client as client_id,
|
||||||
defunt.nom as defunt_nom
|
defunt.nom as defunt_nom
|
||||||
@ -3882,6 +3957,13 @@ class Bdd {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateDevisDate($devisId,$requestedDate){
|
||||||
|
$sql= "UPDATE ".$this->tableprefix."devis as devis
|
||||||
|
SET devis.date = ?
|
||||||
|
WHERE devis.id = ?";
|
||||||
|
$this->execSQLNoData($sql,[$requestedDate,$devisId]);
|
||||||
|
}
|
||||||
|
|
||||||
public function deleteDevisProduit($devisProductId){
|
public function deleteDevisProduit($devisProductId){
|
||||||
$sql = "DELETE FROM ".$this->tableprefix."produit_devis WHERE id = ?;";
|
$sql = "DELETE FROM ".$this->tableprefix."produit_devis WHERE id = ?;";
|
||||||
$this->execSQLNoData($sql, array($devisProductId));
|
$this->execSQLNoData($sql, array($devisProductId));
|
||||||
@ -4557,4 +4639,71 @@ class Bdd {
|
|||||||
$facture["isFactureClientGroup"] = !$isFactureSingleClient;
|
$facture["isFactureClientGroup"] = !$isFactureSingleClient;
|
||||||
return $facture;
|
return $facture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setFactureGeneratedDate($factureId){
|
||||||
|
$datetimeNow = new Datetime();
|
||||||
|
$dateNow = $datetimeNow->format("Y-m-d");
|
||||||
|
$sql = "UPDATE ".$this->tableprefix."facture set document_generated_date = ? WHERE id = ?";
|
||||||
|
$this->execSQLNoData($sql,[
|
||||||
|
$dateNow,
|
||||||
|
$factureId
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFactureSentDate($factureId){
|
||||||
|
$datetimeNow = new Datetime();
|
||||||
|
$dateNow = $datetimeNow->format("Y-m-d");
|
||||||
|
$sql = "UPDATE ".$this->tableprefix."facture set document_sent_date = ? WHERE id = ?";
|
||||||
|
$this->execSQLNoData($sql,[
|
||||||
|
$dateNow,
|
||||||
|
$factureId
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFactureClientMailByFactureId($factureId){
|
||||||
|
$sql = "SELECT
|
||||||
|
facture.id,
|
||||||
|
facture.facture_type,
|
||||||
|
facture_client.mail as facture_client_mail,
|
||||||
|
facture_client_group_facturation.email as facture_client_group_mail,
|
||||||
|
facture.fk_client_id as facture_client_id,
|
||||||
|
facture.fk_client_group_facturation_id as facture_client_group_facturation_id,
|
||||||
|
client.id as client_id,
|
||||||
|
client.fk_client_group_facturation_id as devis_client_group_facturation_id,
|
||||||
|
client.mail as devis_client_mail,
|
||||||
|
client_group_facturation.email as devis_client_group_mail
|
||||||
|
FROM ".$this->tableprefix."facture as facture
|
||||||
|
LEFT JOIN ".$this->tableprefix."devis as devis
|
||||||
|
on facture.id_devis = devis.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client as client
|
||||||
|
on devis.id_client = client.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group_facturation as client_group_facturation
|
||||||
|
on client.fk_client_group_facturation_id = client_group_facturation.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client as facture_client
|
||||||
|
on facture.fk_client_id = facture_client.id
|
||||||
|
LEFT JOIN ".$this->tableprefix."client_group_facturation as facture_client_group_facturation
|
||||||
|
on facture.fk_client_group_facturation_id = facture_client_group_facturation.id
|
||||||
|
WHERE facture.id = ?
|
||||||
|
LIMIT 1;";
|
||||||
|
|
||||||
|
$mail = null;
|
||||||
|
$result = $this->execSQLNoJsonReturn($sql,[$factureId]);
|
||||||
|
if(!empty($result)){
|
||||||
|
$facture = $result[0];
|
||||||
|
$factureIsSingle = $facture["facture_type"] == FactureTypeConstant::TYPE_SINGLE;
|
||||||
|
if($factureIsSingle){
|
||||||
|
$mail = $facture["fk_client_group_facturation_id"] != null ?
|
||||||
|
$facture["devis_client_group_mail"] :
|
||||||
|
$facture["devis_client_mail"];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$factureIsClientWithoutGroup = $facture["facture_client_id"] != null && $facture["facture_client_id"] != 0;
|
||||||
|
$mail = $factureIsClientWithoutGroup ?
|
||||||
|
$facture["facture_client_mail"] :
|
||||||
|
$facture["facture_client_group_mail"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $mail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -153,7 +153,7 @@ class TalkDb {
|
|||||||
|
|
||||||
$rooms = $this->execSQLNoJsonReturn(
|
$rooms = $this->execSQLNoJsonReturn(
|
||||||
$sql,
|
$sql,
|
||||||
[$names['createdByUser'],$names['createdByAdmin']]);
|
[$names['target'],$names['sender']]);
|
||||||
|
|
||||||
if(!empty($rooms)){
|
if(!empty($rooms)){
|
||||||
return $rooms[0];
|
return $rooms[0];
|
||||||
@ -161,13 +161,13 @@ class TalkDb {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createDevisTalkRoomAndReturnDevisTalkRoom($idNextCloud,$token){
|
public function createDevisTalkRoomAndReturnDevisTalkRoom($targetUser,$senderUser,$token){
|
||||||
$roomName = '["'.$idNextCloud.'","'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"]';
|
$roomName = '["'.$targetUser.'","'.$senderUser.'"]';
|
||||||
$this->createDevisTalkRoom($roomName,$token);
|
$this->createDevisTalkRoom($roomName,$token);
|
||||||
$room = $this->getDevisTalkRoomByName($roomName);
|
$room = $this->getDevisTalkRoomByName($roomName);
|
||||||
$attendees = [
|
$attendees = [
|
||||||
$idNextCloud,
|
$targetUser,
|
||||||
BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD
|
$senderUser
|
||||||
];
|
];
|
||||||
$this->createDevisTalkRoomAttendeesByActors($attendees,$room['id']);
|
$this->createDevisTalkRoomAttendeesByActors($attendees,$room['id']);
|
||||||
return $room;
|
return $room;
|
||||||
|
|||||||
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
namespace OCA\Gestion\Helpers;
|
namespace OCA\Gestion\Helpers;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
class FileExportHelpers
|
class FileExportHelpers
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -53,6 +55,27 @@ class FileExportHelpers
|
|||||||
return $racinePath.'CLIENTS/'.mb_strtoupper($clientName,'UTF-8').'/';
|
return $racinePath.'CLIENTS/'.mb_strtoupper($clientName,'UTF-8').'/';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function GetFactureGroupFilename($factureNum,$clientName){
|
||||||
|
$factureNum = str_replace('/','-',$factureNum);
|
||||||
|
$clientName = str_replace(' ',' ',$clientName ?? '');
|
||||||
|
return 'FACTURE'.'_'.$factureNum.'_'.mb_strtoupper($clientName,'UTF-8').'.pdf';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function GetFactureGroupFolder($clientName,$facturationDate){
|
||||||
|
$clientRacineFolder = 'CLIENTS/'.mb_strtoupper($clientName,'UTF-8').'/';
|
||||||
|
$factureDatetime = new DateTime($facturationDate);
|
||||||
|
$factureDateYear = $factureDatetime->format('Y');
|
||||||
|
$factureMonth = DateHelpers::GetDateWithFormatDayAndMonthPlainString($facturationDate);
|
||||||
|
$factureByYearFolder = $clientRacineFolder."$factureDateYear".'/'.$factureMonth.'/'.'FACTURES'.'/';
|
||||||
|
return $factureByYearFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function GetFactureGroupFileFullPath($clientName,$factureNum,$facturationDate){
|
||||||
|
$factureFolder = self::GetFactureGroupFolder($clientName,$facturationDate);
|
||||||
|
$factureFilename = self::GetFactureGroupFilename($factureNum,$clientName);
|
||||||
|
return $factureFolder.$factureFilename;
|
||||||
|
}
|
||||||
|
|
||||||
public static function GetDefuntsFolder($clientName,$defuntName,$racinePath){
|
public static function GetDefuntsFolder($clientName,$defuntName,$racinePath){
|
||||||
$clientsFolder = self::GetClientsFolder($clientName,$racinePath);
|
$clientsFolder = self::GetClientsFolder($clientName,$racinePath);
|
||||||
return $clientsFolder.'DEFUNTS/'.mb_strtoupper($defuntName,'UTF-8').'/';
|
return $clientsFolder.'DEFUNTS/'.mb_strtoupper($defuntName,'UTF-8').'/';
|
||||||
|
|||||||
@ -26,8 +26,11 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace OCA\Gestion\Service;
|
namespace OCA\Gestion\Service;
|
||||||
|
|
||||||
|
use OCA\Gestion\Constants\BddConstant;
|
||||||
use OCA\Gestion\Constants\DevisMentionConstant;
|
use OCA\Gestion\Constants\DevisMentionConstant;
|
||||||
|
use OCA\Gestion\Constants\VCalendarPropertyConstant;
|
||||||
use OCA\Gestion\Db\Bdd;
|
use OCA\Gestion\Db\Bdd;
|
||||||
|
use OCP\IUserSession;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use OCA\Gestion\Helpers\VCalendarHelpers;
|
use OCA\Gestion\Helpers\VCalendarHelpers;
|
||||||
|
|
||||||
@ -41,18 +44,36 @@ class GestionService {
|
|||||||
/** @var TalkService */
|
/** @var TalkService */
|
||||||
private $talkService;
|
private $talkService;
|
||||||
|
|
||||||
|
private $userConnectedUuid;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Bdd $gestionBdd,
|
Bdd $gestionBdd,
|
||||||
LoggerInterface $logger,
|
LoggerInterface $logger,
|
||||||
TalkService $talkService) {
|
TalkService $talkService,
|
||||||
|
IUserSession $userSession) {
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
$this->gestionBdd = $gestionBdd;
|
$this->gestionBdd = $gestionBdd;
|
||||||
$this->talkService = $talkService;
|
$this->talkService = $talkService;
|
||||||
|
try{
|
||||||
|
$this->userConnectedUuid = $userSession->getUser()->getUID();
|
||||||
|
}
|
||||||
|
catch(Exception){
|
||||||
|
$this->userConnectedUuid = BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function GetIsCalendarPendingFromVCalendarString(string $vCalendarString): bool{
|
||||||
|
$isCalendarPending = false;
|
||||||
|
$isCalendarPendingValue = VCalendarHelpers::GetValueFromKeyInVCalendarString(VCalendarPropertyConstant::PROPERTY_IS_CALENDAR_PENDING, $vCalendarString);
|
||||||
|
if($isCalendarPendingValue == "1"){
|
||||||
|
$isCalendarPending = true;
|
||||||
|
}
|
||||||
|
return $isCalendarPending;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function GetIsLeaveFromVCalendarString(string $vCalendarString): bool{
|
private function GetIsLeaveFromVCalendarString(string $vCalendarString): bool{
|
||||||
$isLeave = false;
|
$isLeave = false;
|
||||||
$isLeaveValue = VCalendarHelpers::GetValueFromKeyInVCalendarString("ISLEAVE", $vCalendarString);
|
$isLeaveValue = VCalendarHelpers::GetValueFromKeyInVCalendarString(VCalendarPropertyConstant::PROPERTY_IS_LEAVE, $vCalendarString);
|
||||||
if($isLeaveValue == "1"){
|
if($isLeaveValue == "1"){
|
||||||
$isLeave = true;
|
$isLeave = true;
|
||||||
}
|
}
|
||||||
@ -72,16 +93,6 @@ class GestionService {
|
|||||||
private function GetThanatoIdFromVCalendarString(string $vCalendarString)
|
private function GetThanatoIdFromVCalendarString(string $vCalendarString)
|
||||||
{
|
{
|
||||||
$thanatoId = 0;
|
$thanatoId = 0;
|
||||||
$thanatoNames = $this->GetAttendeesNameFromVCalendarString($vCalendarString);
|
|
||||||
if(count($thanatoNames) > 0){
|
|
||||||
$thanatoName = $thanatoNames[0];
|
|
||||||
$thanatoIdFromDb = $this->gestionBdd->getThanatoIdByUserUuid($thanatoName);
|
|
||||||
if($thanatoIdFromDb != null){
|
|
||||||
$thanatoId = $thanatoIdFromDb;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//get from calendar object
|
|
||||||
$organizerName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
$organizerName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
||||||
if($organizerName != null){
|
if($organizerName != null){
|
||||||
$thanatoIdFromDb = $this->gestionBdd->getThanatoIdByUserUuid($organizerName);
|
$thanatoIdFromDb = $this->gestionBdd->getThanatoIdByUserUuid($organizerName);
|
||||||
@ -89,7 +100,6 @@ class GestionService {
|
|||||||
$thanatoId = $thanatoIdFromDb;
|
$thanatoId = $thanatoIdFromDb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return $thanatoId;
|
return $thanatoId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +170,8 @@ class GestionService {
|
|||||||
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
||||||
$this->gestionBdd->updateDevisComment($devis['id'],$requestedDevisComment,$devis['comment']);
|
$this->gestionBdd->updateDevisComment($devis['id'],$requestedDevisComment,$devis['comment']);
|
||||||
|
|
||||||
|
$requestedDevisDate = $this->GetCalendarDateFromVCalendarString($vCalendarString);
|
||||||
|
$this->gestionBdd->updateDevisDate($devis['id'],$requestedDevisDate);
|
||||||
$articlesValue = $this->GetArticlesNameFromVCalendarString($vCalendarString);
|
$articlesValue = $this->GetArticlesNameFromVCalendarString($vCalendarString);
|
||||||
if(!empty($articlesValue)){
|
if(!empty($articlesValue)){
|
||||||
$articleIds = $this->gestionBdd->getArticleIdsByArticleReferences($articlesValue);
|
$articleIds = $this->gestionBdd->getArticleIdsByArticleReferences($articlesValue);
|
||||||
@ -174,6 +186,7 @@ class GestionService {
|
|||||||
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
||||||
$requestedArticleReferences = $this->GetArticlesNameFromVCalendarString($vCalendarString);
|
$requestedArticleReferences = $this->GetArticlesNameFromVCalendarString($vCalendarString);
|
||||||
$requestedArticleIds = $this->gestionBdd->getArticleIdsByArticleReferences($requestedArticleReferences);
|
$requestedArticleIds = $this->gestionBdd->getArticleIdsByArticleReferences($requestedArticleReferences);
|
||||||
|
$requestedDevisDate = $this->GetCalendarDateFromVCalendarString($vCalendarString);
|
||||||
$articleDevis = $this->gestionBdd->getProduitDevisByDevisId($devis['id']);
|
$articleDevis = $this->gestionBdd->getProduitDevisByDevisId($devis['id']);
|
||||||
$articleDevisIds = [];
|
$articleDevisIds = [];
|
||||||
foreach($articleDevis as $currentArticleDevis){
|
foreach($articleDevis as $currentArticleDevis){
|
||||||
@ -187,7 +200,8 @@ class GestionService {
|
|||||||
$devis['client_id'] == $requestedClientId &&
|
$devis['client_id'] == $requestedClientId &&
|
||||||
$devis['lieu_id'] == $requestLocationId &&
|
$devis['lieu_id'] == $requestLocationId &&
|
||||||
$devis['comment'] == $requestedDevisComment &&
|
$devis['comment'] == $requestedDevisComment &&
|
||||||
$requestedArticleIds == $articleDevisIds;
|
$requestedArticleIds == $articleDevisIds &&
|
||||||
|
$devis['date'] == $requestedDevisDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function HandleUpdatedCalendarObject(string $vCalendarString){
|
public function HandleUpdatedCalendarObject(string $vCalendarString){
|
||||||
@ -204,18 +218,20 @@ class GestionService {
|
|||||||
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
|
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
|
||||||
$devis = $this->gestionBdd->getDevisByCalendarUuid($calendarUuid);
|
$devis = $this->gestionBdd->getDevisByCalendarUuid($calendarUuid);
|
||||||
if($devis != null){
|
if($devis != null){
|
||||||
$this->gestionBdd->updateDevisMention($devis['id'],DevisMentionConstant::NEW);
|
|
||||||
$isDevisAlreadyUpdated = $this->CheckIfDevisIsAlreadyUpdated($devis,$vCalendarString);
|
$isDevisAlreadyUpdated = $this->CheckIfDevisIsAlreadyUpdated($devis,$vCalendarString);
|
||||||
if($isDevisAlreadyUpdated){
|
if($isDevisAlreadyUpdated){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
$devisIsAlreadyFactured = $devis['mentions'] == DevisMentionConstant::FACTURED || $devis['mentions'] == DevisMentionConstant::FACTURED_FORMATTED;
|
||||||
$this->UpdateDevisDataByVCalendarString($devis,$vCalendarString);
|
$this->UpdateDevisDataByVCalendarString($devis,$vCalendarString);
|
||||||
|
if($devisIsAlreadyFactured == false){
|
||||||
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
||||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devis['id'],$userName);
|
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devis['id'],$userName);
|
||||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName);
|
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName,$this->userConnectedUuid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//update from calendar leave to calendar devis
|
//update from calendar leave or calendar pending to calendar devis
|
||||||
$this->HandleCreatedCalendarObject($vCalendarString);
|
$this->HandleCreatedCalendarObject($vCalendarString);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -247,6 +263,10 @@ class GestionService {
|
|||||||
if($isCalendarForLeave){
|
if($isCalendarForLeave){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$isCalendarPending = $this->GetIsCalendarPendingFromVCalendarString($vCalendarString);
|
||||||
|
if($isCalendarPending){
|
||||||
|
return;
|
||||||
|
}
|
||||||
$calendarSummary = $this->GetCalendarSummaryFromVCalendarString($vCalendarString);
|
$calendarSummary = $this->GetCalendarSummaryFromVCalendarString($vCalendarString);
|
||||||
$clientId = $this->GetClientIdFromVCalendarString($vCalendarString);
|
$clientId = $this->GetClientIdFromVCalendarString($vCalendarString);
|
||||||
$locationId = $this->GetLocationIdFromVCalendarString($vCalendarString);
|
$locationId = $this->GetLocationIdFromVCalendarString($vCalendarString);
|
||||||
@ -266,22 +286,14 @@ class GestionService {
|
|||||||
$articleIds = $this->gestionBdd->getArticleIdsByArticleReferences($articlesValue);
|
$articleIds = $this->gestionBdd->getArticleIdsByArticleReferences($articlesValue);
|
||||||
$this->gestionBdd->insertDevisArticleFromDevisIdAndArticlesIdArray($devisId, $articleIds);
|
$this->gestionBdd->insertDevisArticleFromDevisIdAndArticlesIdArray($devisId, $articleIds);
|
||||||
}
|
}
|
||||||
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId,$userName);
|
|
||||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devisId,$userName);
|
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devisId,$userName);
|
||||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName);
|
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName,$this->userConnectedUuid);
|
||||||
|
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId,$userName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function GetThanatoNameFromVCalendarString($vCalendarString){
|
private function GetThanatoNameFromVCalendarString($vCalendarString){
|
||||||
$thanatoName = null;
|
|
||||||
$thanatoNames = $this->GetAttendeesNameFromVCalendarString($vCalendarString);
|
|
||||||
if(count($thanatoNames) > 0){
|
|
||||||
$thanatoName = $thanatoNames[0];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//get from calendar object
|
|
||||||
$thanatoName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
$thanatoName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
||||||
}
|
return $thanatoName ?? BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD;
|
||||||
return $thanatoName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function GetClientIdFromVCalendarString(string $vCalendarString){
|
private function GetClientIdFromVCalendarString(string $vCalendarString){
|
||||||
|
|||||||
@ -54,7 +54,7 @@ class InvoiceGroupPdfHandler extends FPDF {
|
|||||||
function Header()
|
function Header()
|
||||||
{
|
{
|
||||||
if($this->logo != "nothing"){
|
if($this->logo != "nothing"){
|
||||||
$this->Image($this->logoPath."logo.png", 2, 2, 75,25);
|
$this->Image($this->logoPath."logo.png", 2, 2, 75, 25);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$this->Cell(55,30,'');
|
$this->Cell(55,30,'');
|
||||||
@ -91,7 +91,7 @@ class InvoiceGroupPdfHandler extends FPDF {
|
|||||||
$factureNum = $this->factureData['num'];
|
$factureNum = $this->factureData['num'];
|
||||||
$factureNum = str_replace('/','-',$factureNum);
|
$factureNum = str_replace('/','-',$factureNum);
|
||||||
$clientName = str_replace(' ',' ',$this->factureData['group_name'] ?? '');
|
$clientName = str_replace(' ',' ',$this->factureData['group_name'] ?? '');
|
||||||
return $this->factureData['configuration']->facture_prefixe.'_'.$factureNum.'_'.mb_strtoupper($clientName,'UTF-8');
|
return 'FACTURE'.'_'.$factureNum.'_'.mb_strtoupper($clientName,'UTF-8');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function DrawPageNumbersText($pageNumber,$pageCount){
|
public function DrawPageNumbersText($pageNumber,$pageCount){
|
||||||
|
|||||||
@ -88,7 +88,7 @@ class InvoicePdfService {
|
|||||||
$logo = $this->getLogo();
|
$logo = $this->getLogo();
|
||||||
$invoicePdfData = $this->gestionBdd->getInvoicePdfData($factureId,$currentConfig);
|
$invoicePdfData = $this->gestionBdd->getInvoicePdfData($factureId,$currentConfig);
|
||||||
if($invoicePdfData == null){
|
if($invoicePdfData == null){
|
||||||
return "";
|
return null;
|
||||||
}
|
}
|
||||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||||
$factureFolders = $this->getFacturesFolder($invoicePdfData,$clean_folder);
|
$factureFolders = $this->getFacturesFolder($invoicePdfData,$clean_folder);
|
||||||
@ -112,7 +112,11 @@ class InvoicePdfService {
|
|||||||
$file_pdf->putContent($pdfContent);
|
$file_pdf->putContent($pdfContent);
|
||||||
$filenames[] = $ff_pdf;
|
$filenames[] = $ff_pdf;
|
||||||
}
|
}
|
||||||
return $filenames;
|
$this->gestionBdd->setFactureGeneratedDate($factureId);
|
||||||
|
return [
|
||||||
|
"content" => $pdfContent,
|
||||||
|
"filenames" => $filenames
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateFacturePdfByFactureId($factureId,$idNextCloud){
|
public function generateFacturePdfByFactureId($factureId,$idNextCloud){
|
||||||
@ -195,7 +199,11 @@ class InvoicePdfService {
|
|||||||
$file_pdf->putContent($pdfContent);
|
$file_pdf->putContent($pdfContent);
|
||||||
$filenames[] = $ff_pdf;
|
$filenames[] = $ff_pdf;
|
||||||
}
|
}
|
||||||
return $filenames;
|
$this->gestionBdd->setFactureGeneratedDate($factureId);
|
||||||
|
return [
|
||||||
|
"content" => $pdfContent,
|
||||||
|
"filenames" => $filenames
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateFacturePdfByFactureIds(array $factureIds,$idNextCloud){
|
public function generateFacturePdfByFactureIds(array $factureIds,$idNextCloud){
|
||||||
@ -279,8 +287,8 @@ class InvoicePdfService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->gestionBdd->invoiceListOfDevisIds($devisIds);
|
$this->gestionBdd->invoiceListOfDevisIds($devisIds);
|
||||||
$filenames = $this->generateFactureGroupPdfByFactureId($factureId,$idNextcloud);
|
$factureGeneratedResponse = $this->generateFactureGroupPdfByFactureId($factureId,$idNextcloud);
|
||||||
return $filenames;
|
return $factureGeneratedResponse["filenames"];
|
||||||
}
|
}
|
||||||
catch(Exception){
|
catch(Exception){
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -48,12 +48,12 @@ class TalkService {
|
|||||||
$this->talkDb = $talkDb;
|
$this->talkDb = $talkDb;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getUserDevisTalkRoomNames($idNextCloud){
|
private function getUserDevisTalkRoomNames($target ,$senderUser){
|
||||||
$roomNamesCreatedByUser = '["'.$idNextCloud.'","'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"]';
|
$roomNamesCreatedBytargetUser = '["'.$target.'","'.$senderUser.'"]';
|
||||||
$roomNamesCreatedByAdmin = '["'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'","'.$idNextCloud.'"]';
|
$roomNamesCreatedBySenderUser = '["'.$senderUser.'","'.$target.'"]';
|
||||||
return [
|
return [
|
||||||
"createdByUser" => $roomNamesCreatedByUser,
|
"target" => $roomNamesCreatedBytargetUser,
|
||||||
"createdByAdmin" => $roomNamesCreatedByAdmin
|
"sender" => $roomNamesCreatedBySenderUser
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,36 +68,39 @@ class TalkService {
|
|||||||
return $randomToken;
|
return $randomToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getNotificationsSubjectsParameters(){
|
private function getNotificationsSubjectsParameters(string $senderUser){
|
||||||
return '{"userType":"users","userId":"'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"}';
|
return '{"userType":"users","userId":"'.$senderUser.'"}';
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getNotificationsMessageParameters($commentId){
|
private function getNotificationsMessageParameters($commentId){
|
||||||
return '{"commentId":"'.$commentId.'"}';
|
return '{"commentId":"'.$commentId.'"}';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function sendDevisTalkNotifications(string $message,string $idNextcloud){
|
|
||||||
if($idNextcloud === BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD || $idNextcloud === BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD){
|
|
||||||
return true;
|
public function sendDevisTalkNotifications(string $message,string $targetUser ,string $senderUser){
|
||||||
|
$senderAndTargetIsTheSameUser = $targetUser == $senderUser;
|
||||||
|
$senderUser = $senderAndTargetIsTheSameUser ? BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD : $senderUser;
|
||||||
|
if( $targetUser == BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD && $senderUser == BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD){
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
$roomNames = $this->getUserDevisTalkRoomNames($idNextcloud);
|
$roomNames = $this->getUserDevisTalkRoomNames($targetUser , $senderUser);
|
||||||
$room = $this->talkDb->getDevisTalkRoomByNames($roomNames);
|
$room = $this->talkDb->getDevisTalkRoomByNames($roomNames);
|
||||||
if($room == null){
|
if($room == null){
|
||||||
$roomToken = $this->generateTalkRandomToken();
|
$roomToken = $this->generateTalkRandomToken();
|
||||||
$room = $this->talkDb->createDevisTalkRoomAndReturnDevisTalkRoom($idNextcloud,$roomToken);
|
$room = $this->talkDb->createDevisTalkRoomAndReturnDevisTalkRoom($targetUser,$senderUser, $roomToken);
|
||||||
$initialMessage = $this->talkDb->setDevisTalkRoomInitialMessageAndReturnMessage($room['id'],$idNextcloud);
|
$this->talkDb->setDevisTalkRoomInitialMessageAndReturnMessage($room['id'],$targetUser);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$roomToken = $room['token'];
|
$roomToken = $room['token'];
|
||||||
}
|
}
|
||||||
$devisMessage = $this->talkDb->createDevisTalkRoomMessageAndReturnMessage($room['id'],$message);
|
$devisMessage = $this->talkDb->createDevisTalkRoomMessageAndReturnMessage($room['id'],$message);
|
||||||
$this->talkDb->updateRoomLastMessage($room['id'],$devisMessage['id']);
|
$this->talkDb->updateRoomLastMessage($room['id'],$devisMessage['id']);
|
||||||
$this->talkDb->setAttendeeLastReadMessage($room['id'],$devisMessage['id'],BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD);
|
$this->talkDb->setAttendeeLastReadMessage($room['id'],$devisMessage['id'],$senderUser);
|
||||||
//send notifications
|
//send notifications
|
||||||
$notificationsSubjectsParameters = $this->getNotificationsSubjectsParameters();
|
$notificationsSubjectsParameters = $this->getNotificationsSubjectsParameters($senderUser);
|
||||||
$notificationsMessageParameters = $this->getNotificationsMessageParameters($devisMessage['id']);
|
$notificationsMessageParameters = $this->getNotificationsMessageParameters($devisMessage['id']);
|
||||||
$this->talkDb->sendAttendeeNotifications($idNextcloud,$roomToken,$notificationsSubjectsParameters,$notificationsMessageParameters);
|
$this->talkDb->sendAttendeeNotifications($targetUser,$roomToken,$notificationsSubjectsParameters,$notificationsMessageParameters);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
import "@nextcloud/dialogs/dist/index.css";
|
import "@nextcloud/dialogs/dist/index.css";
|
||||||
|
import Modal from 'bootstrap/js/dist/modal';
|
||||||
import "datatables.net-dt/css/jquery.dataTables.css";
|
import "datatables.net-dt/css/jquery.dataTables.css";
|
||||||
import "../css/mycss.css";
|
import "../css/mycss.css";
|
||||||
|
|
||||||
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
|
||||||
import "./listener/main_listener";
|
import "./listener/main_listener";
|
||||||
import { setDefuntCover, setDefuntPacemakerPhoto,setBijouxPhoto,getBibliotheques, getBijouxById, getHypodermiquesyId, getObservationsById, getproduits, saveAttestationPacemaker,exportCareCertificate, saveRapportBijoux, saveRapportSoin, updateDB } from "./modules/ajaxRequest.mjs";
|
import { getBibliotheques, exportCareCertificate,getBijouxById, getHypodermiquesyId, getObservationsById, getproduits, saveAttestationPacemaker, saveRapportBijoux, saveRapportSoin, setBijouxPhoto, setDefuntCover, setDefuntPacemakerPhoto, updateDB } from "./modules/ajaxRequest.mjs";
|
||||||
|
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
||||||
|
|
||||||
let bibliotheques = [];
|
let bibliotheques = [];
|
||||||
let sortedBibliotheques = [];
|
let sortedBibliotheques = [];
|
||||||
@ -99,15 +100,18 @@ window.addEventListener("DOMContentLoaded", function () {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
saveRapportBijoux({
|
|
||||||
numdefunt: defuntid,
|
|
||||||
withPhotos: selectedValue
|
|
||||||
});
|
|
||||||
$('#saveRapportBijouxModal').hide();
|
$('#saveRapportBijouxModal').hide();
|
||||||
|
modalTitle.text('Générer le rapport des bijoux')
|
||||||
|
modalElement.data('export-type', 'rapport-bijoux')
|
||||||
|
modalElement.data('export-with-photos', selectedValue)
|
||||||
|
modalElement.modal('show')
|
||||||
|
// saveRapportBijoux({
|
||||||
|
// numdefunt: defuntid,
|
||||||
|
// withPhotos: selectedValue
|
||||||
|
// });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
setDefuntCoverButton.addEventListener("click",function(){
|
setDefuntCoverButton.addEventListener("click",function(){
|
||||||
const productCoverRadios = document.getElementsByName('coverProductsRadioButton');
|
const productCoverRadios = document.getElementsByName('coverProductsRadioButton');
|
||||||
let selectedValue = null;
|
let selectedValue = null;
|
||||||
@ -123,15 +127,67 @@ window.addEventListener("DOMContentLoaded", function () {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const modalElement = $('#confirmSendEmailModal')
|
||||||
|
const modalTitle = $('#titleSendEmailModal')
|
||||||
|
const _ = new Modal(modalElement[0],{
|
||||||
|
backdrop: false
|
||||||
|
})
|
||||||
|
$('#validateSendEmailModal').on('click', function(){
|
||||||
|
const type = modalElement.data('export-type')
|
||||||
|
const isSendEmail = $('#checkSendEmailModal').is(':checked')
|
||||||
|
const email = $('#valueSendEmailModal').val()
|
||||||
|
const initEmail = $('#valueSendEmailModal').data('init-value')
|
||||||
|
switch(type){
|
||||||
|
case 'care-certificate':
|
||||||
|
exportCareCertificate({defuntId : defuntid, email: isSendEmail ? email: ''})
|
||||||
|
break;
|
||||||
|
case 'pacemaker':
|
||||||
|
saveAttestationPacemaker({ defuntId: defuntid ,email: isSendEmail ? email: ''});
|
||||||
|
break;
|
||||||
|
case 'rapport-soin':
|
||||||
|
saveRapportSoin({ numdefunt: defuntid ,email: isSendEmail ? email: ''});
|
||||||
|
break;
|
||||||
|
case 'rapport-bijoux':
|
||||||
|
const selectedValue = modalElement.data('export-with-photos')
|
||||||
|
saveRapportBijoux({
|
||||||
|
numdefunt: defuntid,
|
||||||
|
withPhotos: selectedValue ,
|
||||||
|
email: isSendEmail ? email: ''
|
||||||
|
});
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
modalElement.modal('hide')
|
||||||
|
$('#checkSendEmailModal').prop('checked', false);
|
||||||
|
$('#checkSendEmailModal').prop('checked', false);
|
||||||
|
$('#valueSendEmailModal').val(initEmail);
|
||||||
|
})
|
||||||
|
$('#closeSendEmailModal').on('click', function(){
|
||||||
|
modalElement.data('export-type', null)
|
||||||
|
const initEmail = $('#valueSendEmailModal').data('init-value')
|
||||||
|
modalElement.modal('hide')
|
||||||
|
$('#checkSendEmailModal').prop('checked', false);
|
||||||
|
$('#valueSendEmailModal').val(initEmail);
|
||||||
|
})
|
||||||
|
|
||||||
exportCareCertificateButton.addEventListener("click",function(){
|
exportCareCertificateButton.addEventListener("click",function(){
|
||||||
exportCareCertificate({defuntId : defuntid});
|
modalTitle.text("Générer l'attestation de soins")
|
||||||
|
modalElement.data('export-type', 'care-certificate')
|
||||||
|
modalElement.modal('show')
|
||||||
|
// exportCareCertificate({defuntId : defuntid});
|
||||||
})
|
})
|
||||||
pacemakerBtn.addEventListener("click", function(){
|
pacemakerBtn.addEventListener("click", function(){
|
||||||
saveAttestationPacemaker({ defuntId: defuntid });
|
modalTitle.text("Générer l'attestation pacemaker")
|
||||||
|
modalElement.data('export-type', 'pacemaker')
|
||||||
|
modalElement.modal('show')
|
||||||
|
// saveAttestationPacemaker({ defuntId: defuntid });
|
||||||
});
|
});
|
||||||
|
|
||||||
rapportSoinBtn.addEventListener("click", function(){
|
rapportSoinBtn.addEventListener("click", function(){
|
||||||
saveRapportSoin({ numdefunt: defuntid });
|
modalElement.data('export-type', 'rapport-soin')
|
||||||
|
modalElement.modal('show')
|
||||||
|
modalTitle.text('Générer le rapport de soins')
|
||||||
|
// saveRapportSoin({ numdefunt: defuntid });
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on("change", ".photoBijouUpload", function () {
|
$(document).on("change", ".photoBijouUpload", function () {
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import "../css/mycss.css";
|
|||||||
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
||||||
import "./listener/main_listener";
|
import "./listener/main_listener";
|
||||||
import "./listener/invoiceListener";
|
import "./listener/invoiceListener";
|
||||||
|
import "./listener/factureSendMailListener";
|
||||||
|
import { generateUrl } from "@nextcloud/router";
|
||||||
|
|
||||||
window.addEventListener("DOMContentLoaded", function () {
|
window.addEventListener("DOMContentLoaded", function () {
|
||||||
globalConfiguration();
|
globalConfiguration();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import "../css/mycss.css";
|
|||||||
import { getArticlesById, getMailServerFrom, getProduitsById, saveNextcloud, savePdfToNextcloud} from "./modules/ajaxRequest.mjs";
|
import { getArticlesById, getMailServerFrom, getProduitsById, saveNextcloud, savePdfToNextcloud} from "./modules/ajaxRequest.mjs";
|
||||||
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
||||||
import "./listener/main_listener";
|
import "./listener/main_listener";
|
||||||
|
import "./listener/factureSendMailListener";
|
||||||
import { Client } from "./objects/client.mjs";
|
import { Client } from "./objects/client.mjs";
|
||||||
import { capture, captureDevisFacture, sendMail } from "./pdf";
|
import { capture, captureDevisFacture, sendMail } from "./pdf";
|
||||||
|
|
||||||
|
|||||||
75
gestion/src/js/listener/factureSendMailListener.js
Normal file
75
gestion/src/js/listener/factureSendMailListener.js
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import {showError, showSuccess } from "@nextcloud/dialogs";
|
||||||
|
import {baseUrl, hideLoader, showLoader} from "../modules/mainFunction.mjs";
|
||||||
|
import { Facture } from "../objects/facture.mjs";
|
||||||
|
import DataTable from "datatables.net";
|
||||||
|
import { generateUrl } from "@nextcloud/router";
|
||||||
|
|
||||||
|
$('body').on('click', '#showSendFacturePdfMailModal', function () {
|
||||||
|
$('#sendFacturePdfMail').show();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('body').on('click', '#closeSendFacturePdfMail', function () {
|
||||||
|
$('#sendFacturePdfMail').hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('body').on('click', '#showPdfPreview', function () {
|
||||||
|
const factureId = $('#factureIdentifier').data('id');
|
||||||
|
if(factureId){
|
||||||
|
showLoader();
|
||||||
|
$.ajax({
|
||||||
|
url: baseUrl + '/invoice/'+factureId+'/getInvoicePdfContent',
|
||||||
|
type: 'GET',
|
||||||
|
contentType: 'application/json'
|
||||||
|
}).done(function (response, textStatus, xhr) {
|
||||||
|
if (xhr.status === 200) {
|
||||||
|
var base64PDF = response.content;
|
||||||
|
var byteCharacters = atob(base64PDF);
|
||||||
|
var byteNumbers = new Array(byteCharacters.length);
|
||||||
|
for (var i = 0; i < byteCharacters.length; i++) {
|
||||||
|
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
||||||
|
}
|
||||||
|
var byteArray = new Uint8Array(byteNumbers);
|
||||||
|
var fileBlob = new Blob([byteArray], { type: "application/pdf" });
|
||||||
|
|
||||||
|
var fileURL = URL.createObjectURL(fileBlob);
|
||||||
|
window.open(fileURL, "_blank");
|
||||||
|
} else {
|
||||||
|
showError(t('gestion', "Erreur dans la récupération du document de la facture"));
|
||||||
|
}
|
||||||
|
}).fail(function (response, code) {
|
||||||
|
showError(response);
|
||||||
|
}).always(function () {
|
||||||
|
hideLoader();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('body').on('click','#sendFacturePdf',function(){
|
||||||
|
const factureId = $('#factureIdentifier').data('id');
|
||||||
|
const previousMail = $('#valueFacturePdfMail').data('init-value')
|
||||||
|
const email = $('#valueFacturePdfMail').val()
|
||||||
|
if(factureId){
|
||||||
|
showLoader();
|
||||||
|
$.ajax({
|
||||||
|
url: baseUrl + '/invoice/'+factureId+'/sendInvoicePdfViaMail',
|
||||||
|
type: 'POST',
|
||||||
|
contentType: 'application/json',
|
||||||
|
data: JSON.stringify({
|
||||||
|
email
|
||||||
|
})
|
||||||
|
}).done(function (response, textStatus, xhr) {
|
||||||
|
if (xhr.status === 200) {
|
||||||
|
showSuccess(response);
|
||||||
|
} else {
|
||||||
|
showError(t('gestion', "Erreur dans l'envoi du mail chez le client"));
|
||||||
|
}
|
||||||
|
$('#sendFacturePdfMail').hide();
|
||||||
|
}).fail(function (response, code) {
|
||||||
|
$('#sendFacturePdfMail').hide();
|
||||||
|
showError(response);
|
||||||
|
}).always(function () {
|
||||||
|
hideLoader();
|
||||||
|
$('#valueFacturePdfMail').val(previousMail)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
@ -41,6 +41,13 @@ export class Facture {
|
|||||||
else{
|
else{
|
||||||
this.baseUrl = generateUrl(`/apps/gestion/facture/${this.id}/groupDetails`);
|
this.baseUrl = generateUrl(`/apps/gestion/facture/${this.id}/groupDetails`);
|
||||||
}
|
}
|
||||||
|
const isDocumentAlreadyGenerated = myresp.facture_document_generated_date != null;
|
||||||
|
const isDocumentAlreadySent = myresp.facture_document_sent_date != null;
|
||||||
|
this.isDocumentAlreadyGeneratedLabel = this.getDocumentStateLabel(isDocumentAlreadyGenerated);
|
||||||
|
this.isDocumentAlreadySentLabel = this.getDocumentStateLabel(isDocumentAlreadySent);
|
||||||
|
this.isDocumentAlreadyGeneratedClass = this.getDocumentStateClass(isDocumentAlreadyGenerated);
|
||||||
|
this.isDocumentAlreadySentClass = this.getDocumentStateClass(isDocumentAlreadySent);
|
||||||
|
|
||||||
this.clientName = this.nom;
|
this.clientName = this.nom;
|
||||||
if(isFactureSingle == false){
|
if(isFactureSingle == false){
|
||||||
const isFactureClientWithoutGroup = myresp.facture_client_id != null && myresp.facture_client_id != 0;
|
const isFactureClientWithoutGroup = myresp.facture_client_id != null && myresp.facture_client_id != 0;
|
||||||
@ -53,6 +60,14 @@ export class Facture {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getDocumentStateLabel(documentState){
|
||||||
|
return documentState ? "Oui" : "Non";
|
||||||
|
}
|
||||||
|
|
||||||
|
getDocumentStateClass(documentState){
|
||||||
|
return documentState ? "text-bg-success" : "text-bg-warning";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get datatable row for a devis
|
* Get datatable row for a devis
|
||||||
*/
|
*/
|
||||||
@ -69,6 +84,8 @@ export class Facture {
|
|||||||
'<div>' + this.factureProduits + '</div>',
|
'<div>' + this.factureProduits + '</div>',
|
||||||
'<div>' + this.status_paiement + '</div>',
|
'<div>' + this.status_paiement + '</div>',
|
||||||
'<div>' + this.payment_date + '</div>',
|
'<div>' + this.payment_date + '</div>',
|
||||||
|
'<div><span class="badge '+this.isDocumentAlreadyGeneratedClass+'">' + this.isDocumentAlreadyGeneratedLabel + '</span></div>',
|
||||||
|
'<div><span class="badge '+this.isDocumentAlreadySentClass+'">' + this.isDocumentAlreadySentLabel + '</span></div>',
|
||||||
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl +'"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="facture" data-id=' + this.id + ' data-table="facture" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>',
|
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl +'"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="facture" data-id=' + this.id + ' data-table="facture" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>',
|
||||||
];
|
];
|
||||||
return myrow;
|
return myrow;
|
||||||
|
|||||||
@ -1,19 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
$quantiteOptions = [0];
|
$quantiteOptions = [0];
|
||||||
for ($i = 1; $i <= 10; $i++) {
|
for ($i = 1; $i <= 10; $i++) {
|
||||||
$quantiteOptions[] = $i / 10;
|
$quantiteOptions[] = $i / 10;
|
||||||
}
|
}
|
||||||
for($i=1; $i<=15; $i++) {
|
for ($i = 1; $i <= 15; $i++) {
|
||||||
if($i>1) $quantiteOptions[] = $i;
|
if ($i > 1) $quantiteOptions[] = $i;
|
||||||
if($i<15) $quantiteOptions[] = $i + 0.5;
|
if ($i < 15) $quantiteOptions[] = $i + 0.5;
|
||||||
}
|
}
|
||||||
$coverProducts = $_['coverProducts'];
|
$coverProducts = $_['coverProducts'];
|
||||||
?>
|
?>
|
||||||
<div id="contentTable">
|
<div id="contentTable">
|
||||||
<div id="defuntid" data-table="defunt" data-id="<?php echo $_['defunt'][0]->id; ?>"></div>
|
<div id="defuntid" data-table="defunt" data-id="<?php echo $_['defunt'][0]->id; ?>"></div>
|
||||||
<div class="breadcrumb" data-html2canvas-ignore>
|
<div class="breadcrumb" data-html2canvas-ignore>
|
||||||
<div class="crumb svg crumbhome">
|
<div class="crumb svg crumbhome">
|
||||||
<a href="<?php echo($_['url']['index']); ?>" class="icon-home"></a>
|
<a href="<?php echo ($_['url']['index']); ?>" class="icon-home"></a>
|
||||||
<span style="display: none;"></span>
|
<span style="display: none;"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="crumb svg crumbhome">
|
<div class="crumb svg crumbhome">
|
||||||
@ -39,7 +39,7 @@
|
|||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Date de décès</div>
|
<div class="col-3">Date de décès</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input inputDate w-100" type="date" value="<?php echo $_['defunt'][0]->date_defunt ?>" data-table="defunt" data-column="date" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input inputDate w-100" type="date" value="<?php echo $_['defunt'][0]->date_defunt ?>" data-table="defunt" data-column="date" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Heure -->
|
<!-- Heure -->
|
||||||
@ -48,11 +48,11 @@
|
|||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<div class="d-flex flex-row col-12 align-items-center">
|
<div class="d-flex flex-row col-12 align-items-center">
|
||||||
<div class="col-5">
|
<div class="col-5">
|
||||||
<input class="gestion-input w-100" type="time" value="<?php echo $_['defunt'][0]->heure_debut ?>" data-table="defunt" data-column="heure_debut" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="time" value="<?php echo $_['defunt'][0]->heure_debut ?>" data-table="defunt" data-column="heure_debut" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex col-2 justify-content-center align-items-center">à</div>
|
<div class="d-flex col-2 justify-content-center align-items-center">à</div>
|
||||||
<div class="col-5">
|
<div class="col-5">
|
||||||
<input class="gestion-input w-100" type="time" value="<?php echo $_['defunt'][0]->heure_fin ?>" data-table="defunt" data-column="heure_fin" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="time" value="<?php echo $_['defunt'][0]->heure_fin ?>" data-table="defunt" data-column="heure_fin" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -61,14 +61,14 @@
|
|||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Nom</div>
|
<div class="col-3">Nom</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->nom_defunt ?>" data-table="defunt" data-column="nom" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->nom_defunt ?>" data-table="defunt" data-column="nom" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Date de naissance -->
|
<!-- Date de naissance -->
|
||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Date de naissance</div>
|
<div class="col-3">Date de naissance</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input w-100" type="date" value="<?php echo $_['defunt'][0]->date_naissance ?>" data-table="defunt" data-column="date_naissance" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="date" value="<?php echo $_['defunt'][0]->date_naissance ?>" data-table="defunt" data-column="date_naissance" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Sexe -->
|
<!-- Sexe -->
|
||||||
@ -76,8 +76,8 @@
|
|||||||
<div class="col-3">Sexe</div>
|
<div class="col-3">Sexe</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="sexe" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="sexe" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<option value="m" <?php if(strcmp($_['defunt'][0]->sexe, 'm')==0) echo 'selected' ?>>Masculin</option>
|
<option value="m" <?php if (strcmp($_['defunt'][0]->sexe, 'm') == 0) echo 'selected' ?>>Masculin</option>
|
||||||
<option value="f" <?php if(strcmp($_['defunt'][0]->sexe, 'f')==0) echo 'selected' ?>>Féminin</option>
|
<option value="f" <?php if (strcmp($_['defunt'][0]->sexe, 'f') == 0) echo 'selected' ?>>Féminin</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -85,30 +85,30 @@
|
|||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
||||||
<div class="col-3">Référence pacemaker</div>
|
<div class="col-3">Référence pacemaker</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->ref_pacemaker ?? "") ?>" data-table="defunt" data-column="ref_pacemaker" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->ref_pacemaker ?? "") ?>" data-table="defunt" data-column="ref_pacemaker" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Product reference -->
|
<!-- Product reference -->
|
||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
||||||
<div class="col-3">Référence du produit</div>
|
<div class="col-3">Référence du produit</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->product_reference ?? "") ?>" data-table="defunt" data-column="product_reference" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->product_reference ?? "") ?>" data-table="defunt" data-column="product_reference" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Product brand -->
|
<!-- Product brand -->
|
||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
||||||
<div class="col-3">Marque du produit</div>
|
<div class="col-3">Marque du produit</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->product_brand ?? "") ?>" data-table="defunt" data-column="product_brand" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->product_brand ?? "") ?>" data-table="defunt" data-column="product_brand" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Product photo -->
|
<!-- Product photo -->
|
||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
|
||||||
<div class="col-3">Photo du produit</div>
|
<div class="col-3">Photo du produit</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="w-100 uploadDefuntPacemakerPhoto" accept="image/*" type="file" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="w-100 uploadDefuntPacemakerPhoto" accept="image/*" type="file" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<?php
|
<?php
|
||||||
if($_['defunt'][0]->product_photo != null){
|
if ($_['defunt'][0]->product_photo != null) {
|
||||||
?>
|
?>
|
||||||
<label id="pacemakerPhotoLabel" for=""><?php echo ($_['defunt'][0]->product_photo_name ?? "") ?></label>
|
<label id="pacemakerPhotoLabel" for=""><?php echo ($_['defunt'][0]->product_photo_name ?? "") ?></label>
|
||||||
<?php
|
<?php
|
||||||
@ -149,7 +149,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Corpulence</div>
|
<div class="col-3">Corpulence</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="corpulence-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->corpulence ?>" data-table="defunt" data-column="corpulence" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="corpulence-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->corpulence ?>" data-table="defunt" data-column="corpulence" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="corpulence-list"></ul>
|
<ul class="corpulence-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -157,7 +157,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Rigidité</div>
|
<div class="col-3">Rigidité</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="rigidite-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->rigidite ?>" data-table="defunt" data-column="rigidite" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="rigidite-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->rigidite ?>" data-table="defunt" data-column="rigidite" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="rigidite-list"></ul>
|
<ul class="rigidite-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -165,7 +165,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 16px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 16px">
|
||||||
<div class="col-3">Lividités</div>
|
<div class="col-3">Lividités</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="lividite-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->lividite ?>" data-table="defunt" data-column="lividite" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="lividite-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->lividite ?>" data-table="defunt" data-column="lividite" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="lividite-list"></ul>
|
<ul class="lividite-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -184,7 +184,7 @@
|
|||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="acces-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->acces ?>" data-table="defunt" data-column="acces" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="acces-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->acces ?>" data-table="defunt" data-column="acces" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="acces-list"></ul>
|
<ul class="acces-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -192,7 +192,7 @@
|
|||||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Recherche</div>
|
<div class="col-3">Recherche</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->acces_recherche ?>" data-table="defunt" data-column="acces_recherche" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->acces_recherche ?>" data-table="defunt" data-column="acces_recherche" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Etat -->
|
<!-- Etat -->
|
||||||
@ -201,8 +201,8 @@
|
|||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="acces_etat" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="acces_etat" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<option>Selectionner un état</option>
|
<option>Selectionner un état</option>
|
||||||
<option value="mauvais" <?php if(strcmp($_['defunt'][0]->acces_etat, 'mauvais')==0) echo 'selected' ?>>Mauvais</option>
|
<option value="mauvais" <?php if (strcmp($_['defunt'][0]->acces_etat, 'mauvais') == 0) echo 'selected' ?>>Mauvais</option>
|
||||||
<option value="bon" <?php if(strcmp($_['defunt'][0]->acces_etat, 'bon')==0) echo 'selected' ?>>Bon</option>
|
<option value="bon" <?php if (strcmp($_['defunt'][0]->acces_etat, 'bon') == 0) echo 'selected' ?>>Bon</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -214,7 +214,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="preinjection-input" class="gestion-input w-100" autocomplete="off" type="text" value="<?php echo $_['defunt'][0]->preinjection ?>" data-table="defunt" data-column="preinjection" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="preinjection-input" class="gestion-input w-100" autocomplete="off" type="text" value="<?php echo $_['defunt'][0]->preinjection ?>" data-table="defunt" data-column="preinjection" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="preinjection-list"></ul>
|
<ul class="preinjection-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -223,8 +223,8 @@
|
|||||||
<div class="col-3">Quantité(l)</div>
|
<div class="col-3">Quantité(l)</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="preinjection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="preinjection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<?php for($i=0; $i<sizeof($quantiteOptions); $i++) { ?>
|
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if($_['defunt'][0]->preinjection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->preinjection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -237,7 +237,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="injection-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->injection ?>" data-table="defunt" data-column="injection" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="injection-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->injection ?>" data-table="defunt" data-column="injection" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="injection-list"></ul>
|
<ul class="injection-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -247,8 +247,8 @@
|
|||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="injection_diffusion" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="injection_diffusion" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<option>Selectionner un état</option>
|
<option>Selectionner un état</option>
|
||||||
<option value="mauvaise" <?php if(strcmp($_['defunt'][0]->injection_diffusion, 'mauvaise')==0) echo 'selected' ?>>Mauvaise</option>
|
<option value="mauvaise" <?php if (strcmp($_['defunt'][0]->injection_diffusion, 'mauvaise') == 0) echo 'selected' ?>>Mauvaise</option>
|
||||||
<option value="bonne" <?php if(strcmp($_['defunt'][0]->injection_diffusion, 'bonne')==0) echo 'selected' ?>>Bonne</option>
|
<option value="bonne" <?php if (strcmp($_['defunt'][0]->injection_diffusion, 'bonne') == 0) echo 'selected' ?>>Bonne</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -257,8 +257,8 @@
|
|||||||
<div class="col-3">Quantité(l)</div>
|
<div class="col-3">Quantité(l)</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="injection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="injection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<?php for($i=0; $i<sizeof($quantiteOptions); $i++) { ?>
|
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if($_['defunt'][0]->injection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->injection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -271,7 +271,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="coinjection-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->coinjection ?>" data-table="defunt" data-column="coinjection" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="coinjection-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->coinjection ?>" data-table="defunt" data-column="coinjection" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="coinjection-list"></ul>
|
<ul class="coinjection-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -280,8 +280,8 @@
|
|||||||
<div class="col-3">Quantité(l)</div>
|
<div class="col-3">Quantité(l)</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="coinjection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="coinjection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<?php for($i=0; $i<sizeof($quantiteOptions); $i++) { ?>
|
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if($_['defunt'][0]->coinjection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->coinjection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -294,7 +294,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="drainage-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->drainage ?>" data-table="defunt" data-column="drainage" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="drainage-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->drainage ?>" data-table="defunt" data-column="drainage" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="drainage-list"></ul>
|
<ul class="drainage-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -304,8 +304,8 @@
|
|||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="drainage_etat" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="drainage_etat" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<option>Selectionner un état</option>
|
<option>Selectionner un état</option>
|
||||||
<option value="mauvaise" <?php if(strcmp($_['defunt'][0]->drainage_etat, 'mauvaise')==0) echo 'selected' ?>>Mauvaise</option>
|
<option value="mauvaise" <?php if (strcmp($_['defunt'][0]->drainage_etat, 'mauvaise') == 0) echo 'selected' ?>>Mauvaise</option>
|
||||||
<option value="bonne" <?php if(strcmp($_['defunt'][0]->drainage_etat, 'bonne')==0) echo 'selected' ?>>Bonne</option>
|
<option value="bonne" <?php if (strcmp($_['defunt'][0]->drainage_etat, 'bonne') == 0) echo 'selected' ?>>Bonne</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -314,8 +314,8 @@
|
|||||||
<div class="col-3">Quantité(l)</div>
|
<div class="col-3">Quantité(l)</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="drainage_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="drainage_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<?php for($i=0; $i<sizeof($quantiteOptions); $i++) { ?>
|
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if($_['defunt'][0]->drainage_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->drainage_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -328,7 +328,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div id="ponction-input" class="col-9">
|
<div id="ponction-input" class="col-9">
|
||||||
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->ponction ?>" data-table="defunt" data-column="ponction" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->ponction ?>" data-table="defunt" data-column="ponction" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="ponction-list"></ul>
|
<ul class="ponction-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -337,8 +337,8 @@
|
|||||||
<div class="col-3">Quantité(l)</div>
|
<div class="col-3">Quantité(l)</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="ponction_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="ponction_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<?php for($i=0; $i<sizeof($quantiteOptions); $i++) { ?>
|
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if($_['defunt'][0]->ponction_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->ponction_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -351,7 +351,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désignation</div>
|
<div class="col-3">Désignation</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="cavite-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->cavite ?>" data-table="defunt" data-column="cavite" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="cavite-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->cavite ?>" data-table="defunt" data-column="cavite" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="cavite-list"></ul>
|
<ul class="cavite-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -360,8 +360,8 @@
|
|||||||
<div class="col-3">Quantité(l)</div>
|
<div class="col-3">Quantité(l)</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<select class="gestion-select w-100" data-table="defunt" data-column="cavite_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
<select class="gestion-select w-100" data-table="defunt" data-column="cavite_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||||
<?php for($i=0; $i<sizeof($quantiteOptions); $i++) { ?>
|
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if($_['defunt'][0]->cavite_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->cavite_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -400,7 +400,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Désinfection</div>
|
<div class="col-3">Désinfection</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="desinfection-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->desinfection ?>" data-table="defunt" data-column="desinfection" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="desinfection-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->desinfection ?>" data-table="defunt" data-column="desinfection" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="desinfection-list"></ul>
|
<ul class="desinfection-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -408,7 +408,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Lavage</div>
|
<div class="col-3">Lavage</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="lavage-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->lavage ?>" data-table="defunt" data-column="lavage" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="lavage-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->lavage ?>" data-table="defunt" data-column="lavage" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="lavage-list"></ul>
|
<ul class="lavage-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -416,7 +416,7 @@
|
|||||||
<div class="d-flex flex-row col-12 align-items-center" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12 align-items-center" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Rasage</div>
|
<div class="col-3">Rasage</div>
|
||||||
<div class="d-flex col-9 justify-content-start align-items-start">
|
<div class="d-flex col-9 justify-content-start align-items-start">
|
||||||
<input class="gestion-checkbox" type="checkbox" <?php if($_['defunt'][0]->rasage==1) echo 'checked' ?> data-table="defunt" data-column="rasage" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input class="gestion-checkbox" type="checkbox" <?php if ($_['defunt'][0]->rasage == 1) echo 'checked' ?> data-table="defunt" data-column="rasage" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -427,7 +427,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Cosmétiques</div>
|
<div class="col-3">Cosmétiques</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="cosmetiques-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->presentation_cosmetique ?>" data-table="defunt" data-column="presentation_cosmetique" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="cosmetiques-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->presentation_cosmetique ?>" data-table="defunt" data-column="presentation_cosmetique" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="cosmetiques-list"></ul>
|
<ul class="cosmetiques-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -435,7 +435,7 @@
|
|||||||
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
<div class="d-flex flex-row col-12" style="margin-bottom: 8px">
|
||||||
<div class="col-3">Sur</div>
|
<div class="col-3">Sur</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<input id="sur-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->presentation_sur ?>" data-table="defunt" data-column="presentation_sur" data-id="<?php echo $_['defunt'][0]->id ?>"/>
|
<input id="sur-input" class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->presentation_sur ?>" data-table="defunt" data-column="presentation_sur" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||||
<ul class="sur-list"></ul>
|
<ul class="sur-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -454,7 +454,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-12" style="margin-bottom: 32px">
|
<div class="col-12" style="margin-bottom: 32px">
|
||||||
<div class="d-flex flex-row justify-content-between">
|
<div class="d-flex flex-row justify-content-between">
|
||||||
<div><h6>OBSERVATIONS</h6></div>
|
<div>
|
||||||
|
<h6>OBSERVATIONS</h6>
|
||||||
|
</div>
|
||||||
<button id="defuntAddObservation" class="btn btn-secondary" type="button">Ajouter une observation</button>
|
<button id="defuntAddObservation" class="btn btn-secondary" type="button">Ajouter une observation</button>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
@ -463,7 +465,7 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Observation</th>
|
<th>Observation</th>
|
||||||
<th><?php p($l->t('Comment'));?></th>
|
<th><?php p($l->t('Comment')); ?></th>
|
||||||
<th>Actions</th>
|
<th>Actions</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -474,7 +476,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-12" style="margin-bottom: 32px">
|
<div class="col-12" style="margin-bottom: 32px">
|
||||||
<div class="d-flex flex-row justify-content-between">
|
<div class="d-flex flex-row justify-content-between">
|
||||||
<div><h6>BIJOU(X)</h6></div>
|
<div>
|
||||||
|
<h6>BIJOU(X)</h6>
|
||||||
|
</div>
|
||||||
<button id="defuntAddBijou" class="btn btn-secondary" type="button">Ajouter un bijou</button>
|
<button id="defuntAddBijou" class="btn btn-secondary" type="button">Ajouter un bijou</button>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
@ -483,9 +487,9 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Désignation</th>
|
<th>Désignation</th>
|
||||||
<th><?php p($l->t('Comment'));?></th>
|
<th><?php p($l->t('Comment')); ?></th>
|
||||||
<th><?php p($l->t('Photo'));?></th>
|
<th><?php p($l->t('Photo')); ?></th>
|
||||||
<th><?php p($l->t('Nom de la personne qui a récupéré ces bijoux'));?></th>
|
<th><?php p($l->t('Nom de la personne qui a récupéré ces bijoux')); ?></th>
|
||||||
<th>Actions</th>
|
<th>Actions</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -519,4 +523,34 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="modal" id="confirmSendEmailModal" data-backdrop="false" tabindex="-1">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="titleSendEmailModal">Confirmation de l'envoi par email</h5>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group form-check d-flex justify-items-start align-items-center ">
|
||||||
|
<input type="checkbox" style="cursor:pointer;margin-right:8px;" id="checkSendEmailModal">
|
||||||
|
<label class="form-check-label" for="checkSendEmailModal">Voulez-vous envoyer par email le fichier ? </label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group px-4">
|
||||||
|
<input
|
||||||
|
class="form-control rounded-sm"
|
||||||
|
placeholder="adresse email"
|
||||||
|
type="text"
|
||||||
|
value="<?= $_['defunt'][0]->client_group_mail ?? $_['defunt'][0]->client_mail; ?>"
|
||||||
|
style="cursor:pointer;margin-right:8px;"
|
||||||
|
id="valueSendEmailModal"
|
||||||
|
data-init-value="<?= $_['defunt'][0]->client_group_mail ?? $_['defunt'][0]->client_mail; ?>"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button id="closeSendEmailModal" type="button" class="btn btn-secondary">Fermer</button>
|
||||||
|
<button id="validateSendEmailModal" type="button" class="btn btn-primary">Valider</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user