3 * Lots of different room-related operations.
9 char *viewdefs[VIEW_MAX]; /* the different kinds of available views */
11 ROOM_VIEWS exchangeable_views[VIEW_MAX][VIEW_MAX] = { /* the different kinds of available views for a view */
12 {VIEW_BBS, VIEW_MAILBOX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX },
13 {VIEW_BBS, VIEW_MAILBOX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX },
14 {VIEW_MAX, VIEW_MAX, VIEW_ADDRESSBOOK, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX },
15 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX /*VIEW_CALBRIEF*/, VIEW_MAX, VIEW_MAX },
16 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_TASKS, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, },
17 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_NOTES, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, },
18 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_WIKI, VIEW_MAX, VIEW_MAX, VIEW_MAX},
19 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX/*VIEW_CALBRIEF*/, VIEW_MAX, VIEW_MAX},
20 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_JOURNAL, VIEW_MAX },
21 {VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_BLOG },
23 /* the brief calendar view is disabled: VIEW_CALBRIEF */
25 ROOM_VIEWS allowed_default_views[VIEW_MAX] = {
26 1, /* VIEW_BBS Bulletin board view */
27 1, /* VIEW_MAILBOX Mailbox summary */
28 1, /* VIEW_ADDRESSBOOK Address book view */
29 1, /* VIEW_CALENDAR Calendar view */
30 1, /* VIEW_TASKS Tasks view */
31 1, /* VIEW_NOTES Notes view */
32 1, /* VIEW_WIKI Wiki view */
33 0, /* VIEW_CALBRIEF Brief Calendar view */
34 0, /* VIEW_JOURNAL Journal view */
35 0 /* VIEW_BLOG Blog view (not yet implemented) */
40 * Initialize the viewdefs with localized strings
42 void initialize_viewdefs(void) {
43 viewdefs[VIEW_BBS] = _("Bulletin Board");
44 viewdefs[VIEW_MAILBOX] = _("Mail Folder");
45 viewdefs[VIEW_ADDRESSBOOK] = _("Address Book");
46 viewdefs[VIEW_CALENDAR] = _("Calendar");
47 viewdefs[VIEW_TASKS] = _("Task List");
48 viewdefs[VIEW_NOTES] = _("Notes List");
49 viewdefs[VIEW_WIKI] = _("Wiki");
50 viewdefs[VIEW_CALBRIEF] = _("Calendar List");
51 viewdefs[VIEW_JOURNAL] = _("Journal");
52 viewdefs[VIEW_BLOG] = _("Blog");
57 void tmplput_ROOM_COLLECTIONTYPE(StrBuf *Target, WCTemplputParams *TP)
59 folder *Folder = (folder *)CTX;
61 switch(Folder->view) {
63 StrBufAppendBufPlain(Target, HKEY("vevent"), 0);
66 StrBufAppendBufPlain(Target, HKEY("vtodo"), 0);
68 case VIEW_ADDRESSBOOK:
69 StrBufAppendBufPlain(Target, HKEY("vcard"), 0);
72 StrBufAppendBufPlain(Target, HKEY("vnotes"), 0);
75 StrBufAppendBufPlain(Target, HKEY("vjournal"), 0);
78 StrBufAppendBufPlain(Target, HKEY("wiki"), 0);
85 int ConditionalRoomHasGroupdavContent(StrBuf *Target, WCTemplputParams *TP)
87 folder *Folder = (folder *)CTX;
89 lprintf(0, "-> %s: %ld\n", ChrPtr(Folder->name), Folder->view);
91 return ((Folder->view == VIEW_CALENDAR) ||
92 (Folder->view == VIEW_TASKS) ||
93 (Folder->view == VIEW_ADDRESSBOOK) ||
94 (Folder->view == VIEW_NOTES) ||
95 (Folder->view == VIEW_JOURNAL) );
101 int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP)
106 (TP->Tokens->nParameters < 3))
108 return ((WCC->CurRoom.view < VIEW_BBS) ||
109 (WCC->CurRoom.view > VIEW_MAX));
112 return WCC->CurRoom.view == GetTemplateTokenNumber(Target, TP, 2, VIEW_BBS);
116 void tmplput_CurrentRoomViewString(StrBuf *Target, WCTemplputParams *TP)
122 (WCC->CurRoom.defview >= VIEW_MAX) ||
123 (WCC->CurRoom.defview < VIEW_BBS))
125 LogTemplateError(Target, "Token", ERR_PARM2, TP,
126 "Roomview [%ld] not valid\n",
128 WCC->CurRoom.defview : -1);
132 Buf = NewStrBufPlain(_(viewdefs[WCC->CurRoom.defview]), -1);
133 StrBufAppendTemplate(Target, TP, Buf, 0);
137 void tmplput_RoomViewString(StrBuf *Target, WCTemplputParams *TP)
142 CheckThis = GetTemplateTokenNumber(Target, TP, 0, 0);
143 if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
145 LogTemplateError(Target, "Token", ERR_PARM2, TP,
146 "Roomview [%ld] not valid\n",
151 Buf = NewStrBufPlain(_(viewdefs[CheckThis]), -1);
152 StrBufAppendTemplate(Target, TP, Buf, 0);
158 int ConditionalIsAllowedDefaultView(StrBuf *Target, WCTemplputParams *TP)
166 CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
167 if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
169 LogTemplateError(Target, "Conditional", ERR_PARM2, TP,
170 "Roomview [%ld] not valid\n",
175 return allowed_default_views[CheckThis] != 0;
178 int ConditionalThisRoomDefView(StrBuf *Target, WCTemplputParams *TP)
186 CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
187 return CheckThis == WCC->CurRoom.defview;
190 int ConditionalThisRoomCurrView(StrBuf *Target, WCTemplputParams *TP)
198 CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
199 return CheckThis == WCC->CurRoom.view;
202 int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP)
210 CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
211 if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
213 LogTemplateError(Target, "Conditional", ERR_PARM2, TP,
214 "Roomview [%ld] not valid\n",
219 return exchangeable_views [WCC->CurRoom.defview][CheckThis] != VIEW_MAX;
222 void tmplput_ROOM_VIEW(StrBuf *Target, WCTemplputParams *TP)
224 folder *Folder = (folder *)CTX;
225 StrBufAppendPrintf(Target, "%d", Folder->view);
227 void tmplput_ROOM_DEFVIEW(StrBuf *Target, WCTemplputParams *TP)
229 folder *Folder = (folder *)CTX;
230 StrBufAppendPrintf(Target, "%d", Folder->defview);
234 void tmplput_CurrentRoomDefView(StrBuf *Target, WCTemplputParams *TP)
238 StrBufAppendPrintf(Target, "%d", WCC->CurRoom.defview);
245 initialize_viewdefs();
247 RegisterNamespace("THISROOM:VIEW_STRING", 0, 1, tmplput_CurrentRoomViewString, NULL, CTX_NONE);
248 RegisterNamespace("ROOM:VIEW_STRING", 1, 2, tmplput_RoomViewString, NULL, CTX_NONE);
250 RegisterConditional(HKEY("COND:ALLOWED_DEFAULT_VIEW"), 0, ConditionalIsAllowedDefaultView, CTX_NONE);
251 RegisterConditional(HKEY("COND:THISROOM:DEFAULT_VIEW"), 0, ConditionalThisRoomDefView, CTX_NONE);
252 RegisterNamespace("THISROOM:DEFAULT_VIEW", 0, 0, tmplput_CurrentRoomDefView, NULL, CTX_NONE);
253 RegisterNamespace("ROOM:INFO:DEFVIEW", 0, 1, tmplput_ROOM_DEFVIEW, NULL, CTX_ROOMS);
255 RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE);
257 RegisterConditional(HKEY("COND:THISROOM:HAVE_VIEW"), 0, ConditionalThisRoomHaveView, CTX_NONE);
258 RegisterConditional(HKEY("COND:ROOM:GROUPDAV_CONTENT"), 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS);
260 RegisterConditional(HKEY("COND:THISROOM:CURR_VIEW"), 0, ConditionalThisRoomCurrView, CTX_NONE);
261 RegisterNamespace("ROOM:INFO:VIEW", 0, 1, tmplput_ROOM_VIEW, NULL, CTX_ROOMS);
263 RegisterNamespace("ROOM:INFO:COLLECTIONTYPE", 0, 1, tmplput_ROOM_COLLECTIONTYPE, NULL, CTX_ROOMS);