]> code.citadel.org Git - citadel.git/blob - webcit-ng/static/js/views.js
More refinements to .ctdl-middle usage
[citadel.git] / webcit-ng / static / js / views.js
1 // Copyright (c) 2016-2023 by the citadel.org team
2 //
3 // This program is open source software.  Use, duplication, or
4 // disclosure are subject to the GNU General Public License v3.
5
6
7 // Clear the sidebar buttons of any style indicating that one is selected
8 function clear_sidebar_selection() {
9         var items = document.getElementById("ctdl-sidebar").getElementsByTagName("*");
10         for (var i = items.length; i--;) {
11                 if (items[i].id.includes("ctdl-sidebar-button-")) {
12                         items[i].classList.remove("ctdl-sidebar-button-selected");
13                 }
14         }
15         document.getElementById("ctdl_mail_folder_list").style.display = "none";
16 }
17
18
19 // This function is the dispatcher that determines the correct view for a room, and calls the correct renderer.
20 function render_room_view() {
21
22         // The view renderer will set its own room navigation buttons
23         for (const d of ["ctdl-newmsg-button", "ctdl-ungoto-button", "ctdl-skip-button", "ctdl-goto-button", "ctdl-delete-button"]) {
24                 document.getElementById(d).style.display = "none";
25         }
26
27         clear_sidebar_selection();
28         document.getElementById("ctdl-main").innerHTML = 
29                 "<div class=\"ctdl-middle\">"
30                 + _("Loading messages from server, please wait")
31                 + "</div>";
32
33         switch(current_view) {
34
35                 // The "forum" module displays rooms with the "VIEW_BBS" view as classic style web forums.
36                 case views.VIEW_BBS:
37                         document.getElementById("ctdl-sidebar-button-forums").classList.add("ctdl-sidebar-button-selected");
38                         view_render_forums();
39                         break;
40
41                 // The "mail" module displays rooms with the VIEW_MAILBOX view as a webmail program.
42                 case views.VIEW_MAILBOX:
43                 case views.VIEW_DRAFTS:
44                         document.getElementById("ctdl-sidebar-button-mail").classList.add("ctdl-sidebar-button-selected");
45                         display_mail_folder_list("ctdl_mail_folder_list");
46                         view_render_mail();
47                         break;
48
49                 // The "contacts" module displays rooms with the VIEW_ADDRESSBOOK view as a contacts manager.
50                 case views.VIEW_ADDRESSBOOK:
51                         document.getElementById("ctdl-main").innerHTML =
52                                 "<div class=\"ctdl-middle\">'" + current_room + "' is an address book but there is no renderer.</div>";
53                         break;
54
55                 case views.VIEW_CALENDAR:
56                 case views.VIEW_CALBRIEF:
57                         document.getElementById("ctdl-main").innerHTML =
58                                 "<div class=\"ctdl-middle\">'" + current_room + "' is a calendar but there is no renderer.</div>";
59                         break;
60
61                 case views.VIEW_TASKS:
62                         document.getElementById("ctdl-main").innerHTML =
63                                 "<div class=\"ctdl-middle\">'" + current_room + "' is a task list but there is no renderer.</div>";
64                         break;
65
66                 case views.VIEW_NOTES:
67                         document.getElementById("ctdl-main").innerHTML =
68                                 "<div class=\"ctdl-middle\">'" + current_room + "' is a notes list but there is no renderer.</div>";
69                         break;
70
71                 case views.VIEW_WIKI:
72                         document.getElementById("ctdl-main").innerHTML =
73                                 "<div class=\"ctdl-middle\">'" + current_room + "' is a wiki but there is no renderer.</div>";
74                         break;
75
76                 case views.VIEW_JOURNAL:
77                         document.getElementById("ctdl-main").innerHTML =
78                                 "<div class=\"ctdl-middle\">'" + current_room + "' is a journal but there is no renderer.</div>";
79                         break;
80
81                 case views.VIEW_BLOG:
82                         document.getElementById("ctdl-main").innerHTML =
83                                 "<div class=\"ctdl-middle\">'" + current_room + "' is a blog but there is no renderer.</div>";
84                         break;
85
86                 case views.VIEW_QUEUE:
87                         document.getElementById("ctdl-main").innerHTML =
88                                 "<div class=\"ctdl-middle\">We ought to be displaying the email queue here.</div>";
89                         break;
90
91                 default:
92                         document.getElementById("ctdl-main").innerHTML =
93                                 "<div class=\"ctdl-middle\">The view for " + current_room + " is " + current_view + " but there is no renderer.</div>";
94                         break;
95         }
96
97 }
98
99
100 // This gets called when the user clicks the "enter message" or "post message" or "add item" button etc.
101 function entmsg_dispatcher() {
102         switch(current_view) {
103                 case views.VIEW_BBS:
104                         forum_entmsg();
105                         break;
106                 case views.VIEW_MAILBOX:
107                         mail_compose(false, "", 0, "", "", "");
108                         break;
109                 default:
110                         break;
111         }
112 }
113
114
115 // This gets called when the user clicks the "delete" button etc.
116 function delete_dispatcher() {
117         switch(current_view) {
118                 case views.VIEW_MAILBOX:
119                         mail_delete_selected();
120                         break;
121                 default:
122                         break;
123         }
124 }
125
126