fix dlen
[citadel.git] / webcit-ng / static / js / view_calendar.js
index b6d135d368be13e6ba0fcea1ad816f08dd563eab..28fcbd68cbb028ffc8344db3a321d9bbfd5fb4b9 100644 (file)
@@ -3,10 +3,56 @@
 // 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`;
+
+       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.text());
+               }
+               else {
+                       throw new Error(`${response.status} ${response.statusText}`);
+               }
+       })
+       //.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);
+               document.getElementById("ctdl-main").innerHTML = `<div class="ctdl-fatal-error">${error}</div>`;
+       });
 }