// Copyright (c) 2016-2023 by the citadel.org team
//
// This program is open source software. Use, duplication, or
-// disclosure are subject to the GNU General Public License v3.
+// disclosure is subject to the GNU General Public License v3.
// RENDERER FOR THIS VIEW
function view_render_calendar() {
- document.getElementById("ctdl-main").innerHTML = `STUB RENDERER FOR CALENDAR ROOM`;
- fetch(
- "/ctdl/r/" + escapeHTMLURI(current_room) + "/calendar::"
- )
- .then((response) => {
+ let options = {
+ method: "REPORT",
+ headers: {
+ "Content-Type" : "application/xml; charset=utf-8"
+ },
+ body: `
+ <CAL:calendar-query xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav">
+ <allprop />
+ <CAL:filter>
+ <CAL:comp-filter name="VCALENDAR">
+ <CAL:comp-filter name="VEVENT" />
+ </CAL:comp-filter>
+ </CAL:filter>
+ </CAL:calendar-query>
+ `
+ };
+
+ fetch("/ctdl/r/" + escapeHTMLURI(current_room), options)
+ .then(response => {
if (response.ok) {
- return(response.json());
+ return(response.text());
+ }
+ else {
+ throw new Error(`${response.status} ${response.statusText}`);
}
})
- .then((j) => {
- console.log("Something");
+ //.then(str => document.getElementById("ctdl-main").innerHTML = escapeHTML(str))
+ .then(str => new window.DOMParser().parseFromString(str, "text/xml"))
+ .then(xmlcal => {
+ document.getElementById("ctdl-main").innerHTML = "calendar items:<br>";
+ let root = xmlcal.documentElement;
+ let children = root.childNodes;
+ for (let i=0; i<children.length; ++i) {
+ let child = children[i];
+ if (child.nodeType == Node.ELEMENT_NODE) {
+ var getetag_e = child.getElementsByTagName("DAV:href")[0];
+ var getetag_s = getetag_e.textContent;
+ document.getElementById("ctdl-main").innerHTML += getetag_s + "<br>";
+ }
+ }
+
})
- .catch((error) => {
- console.log("Error: " + error);
+ .catch(error => {
+ console.log(error);
+ document.getElementById("ctdl-main").innerHTML = `<div class="ctdl-fatal-error">${error}</div>`;
});
}