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