1 // This module handles the view for "mailbox" rooms.
3 // Copyright (c) 2016-2022 by the citadel.org team
5 // This program is open source software. Use, duplication, or
6 // disclosure are subject to the GNU General Public License v3.
9 // Remember the last message that was selected
10 var selected_message = 0;
11 var RefreshMailboxInterval;
14 // A message has been selected...
15 function select_message(msgnum) {
16 // unhighlight any previously selected message
18 document.getElementById("ctdl-msgsum-" + selected_message).classList.remove("w3-blue");
23 // highlight the newly selected message
24 selected_message = msgnum;
25 document.getElementById("ctdl-msgsum-" + selected_message).classList.add("w3-blue");
26 document.getElementById("ctdl-msgsum-" + selected_message).scrollIntoView();
28 // display the message
29 reading_pane = document.getElementById("ctdl-reading-pane").innerHTML = "message selected " + msgnum ;
33 // render one row in the mailbox table (this could be called from one of several places)
34 function mail_render_row(msg) {
36 + "id=\"ctdl-msgsum-" + msg["msgnum"] + "\" "
37 + "onClick=\"select_message(" + msg["msgnum"] + ");\" "
38 //+ "onmouseenter=\"console.log('mouse in');\" "
39 //+ "onmouseleave=\"console.log('mouse out');\""
41 + "<td>" + msg["subject"] + "</td>"
42 + "<td>" + msg["author"] + " <" + msg["addr"] + "></td>"
43 + "<td>" + convertTimestamp(msg["time"]) + "</td>"
44 + "<td>" + msg["msgnum"] + "</td>"
50 // Set up the mailbox view
51 function mail_display() {
52 document.getElementById("ctdl-main").innerHTML = "<div id=\"ctdl-mailbox-pane\">mailbox pane</div><div id=\"ctdl-reading-pane\">reading pane</div>";
53 refresh_mail_display();
54 RefreshMailboxInterval = setInterval(refresh_mail_display, 10000);
58 // Display or refresh the mailbox
59 function refresh_mail_display() {
60 console.log("refresh_mail_display()");
62 // If the "ctdl-mailbox-pane" no longer exists, the user has navigated to a different part of the site,
63 // so cancel the refresh.
65 document.getElementById("ctdl-mailbox-pane").innerHTML;
68 console.log("ending refresh_mail_display()");
69 clearInterval(RefreshMailboxInterval);
73 // Now go to the server.
74 url = "/ctdl/r/" + escapeHTMLURI(current_room) + "/mailbox";
75 fetch_mailbox = async() => {
76 response = await fetch(url);
77 msgs = await(response.json());
80 box = "<table class=\"w3-table-all w3-hoverable\" width=100%>"
81 + "<tr class=\"w3-blue\">"
82 + "<th>" + _("Subject") + "</th>"
83 + "<th>" + _("Sender") + "</th>"
84 + "<th>" + _("Date") + "</th>"
88 for (var i=0; i<msgs.length; ++i) {
89 box += mail_render_row(msgs[i]);
93 document.getElementById("ctdl-mailbox-pane").innerHTML = box;
95 if (selected_message > 0) { // if we had a message selected, keep it selected
96 select_message(selected_message);