X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Froomviews.c;h=18563000db4ebc8062d6d7c76d42627c2d4319d2;hb=HEAD;hp=8f21b7a91a664223cc42916f1d1e9c930991aced;hpb=c9cf7593dbd2aade23bec479ab7299f50bb67298;p=citadel.git diff --git a/webcit/roomviews.c b/webcit/roomviews.c index 8f21b7a91..d16b70530 100644 --- a/webcit/roomviews.c +++ b/webcit/roomviews.c @@ -3,25 +3,15 @@ */ #include "webcit.h" -#include "webserver.h" -char *viewdefs[VIEW_MAX]; /* the different kinds of available views */ -ROOM_VIEWS exchangeable_views[VIEW_MAX][VIEW_MAX] = { - { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, /* bulletin board */ - { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, /* mailbox summary */ - { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, /* address book */ - { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, /* calendar */ - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, /* tasks */ - { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, /* notes */ - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, /* wiki */ - { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 }, /* brief calendar */ - { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* journal */ - { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, /* drafts */ - { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } /* blog */ -}; +char *viewdefs[VIEW_MAX]; -ROOM_VIEWS allowed_default_views[VIEW_MAX] = { +/* + * This table defines which views may be selected as the + * default view for a room at the time of its creation. + */ +int allowed_default_views[VIEW_MAX] = { 1, /* VIEW_BBS Bulletin board */ 1, /* VIEW_MAILBOX Mailbox summary */ 1, /* VIEW_ADDRESSBOOK Address book */ @@ -32,30 +22,49 @@ ROOM_VIEWS allowed_default_views[VIEW_MAX] = { 0, /* VIEW_CALBRIEF Brief Calendar */ 0, /* VIEW_JOURNAL Journal */ 0, /* VIEW_DRAFTS Drafts */ - 0 /* VIEW_BLOG Blog */ + 1, /* VIEW_BLOG Blog */ + 0 /* VIEW_QUEUE Mail Queue */ +}; + +/* + * Given the default view for a room, this table defines + * which alternate views may be selected by the user. + */ +ROOM_VIEWS exchangeable_views[VIEW_MAX][VIEW_MAX] = { + { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, /* bulletin board */ + { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, /* mailbox summary */ + { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* address book */ + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, /* calendar */ + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, /* tasks */ + { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, /* notes */ + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, /* wiki */ + { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, /* brief calendar */ + { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, /* journal */ + { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, /* drafts */ + { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, /* blog */ }; /* * Initialize the viewdefs with localized strings */ void initialize_viewdefs(void) { - viewdefs[VIEW_BBS] = _("Bulletin Board"); - viewdefs[VIEW_MAILBOX] = _("Mail Folder"); - viewdefs[VIEW_ADDRESSBOOK] = _("Address Book"); - viewdefs[VIEW_CALENDAR] = _("Calendar"); - viewdefs[VIEW_TASKS] = _("Task List"); - viewdefs[VIEW_NOTES] = _("Notes List"); - viewdefs[VIEW_WIKI] = _("Wiki"); - viewdefs[VIEW_CALBRIEF] = _("Calendar List"); - viewdefs[VIEW_JOURNAL] = _("Journal"); - viewdefs[VIEW_BLOG] = _("Blog"); + viewdefs[VIEW_BBS] = _("Bulletin Board"); + viewdefs[VIEW_MAILBOX] = _("Mail Folder"); + viewdefs[VIEW_ADDRESSBOOK] = _("Address Book"); + viewdefs[VIEW_CALENDAR] = _("Calendar"); + viewdefs[VIEW_TASKS] = _("Task List"); + viewdefs[VIEW_NOTES] = _("Notes List"); + viewdefs[VIEW_WIKI] = _("Wiki"); + viewdefs[VIEW_CALBRIEF] = _("Calendar List"); + viewdefs[VIEW_JOURNAL] = _("Journal"); + viewdefs[VIEW_DRAFTS] = _("Drafts"); + viewdefs[VIEW_BLOG] = _("Blog"); } - void tmplput_ROOM_COLLECTIONTYPE(StrBuf *Target, WCTemplputParams *TP) { - folder *Folder = (folder *)CTX; + folder *Folder = (folder *)CTX(CTX_ROOMS); switch(Folder->view) { case VIEW_CALENDAR: @@ -83,9 +92,9 @@ void tmplput_ROOM_COLLECTIONTYPE(StrBuf *Target, WCTemplputParams *TP) int ConditionalRoomHasGroupdavContent(StrBuf *Target, WCTemplputParams *TP) { - folder *Folder = (folder *)CTX; + folder *Folder = (folder *)CTX(CTX_ROOMS); - lprintf(0, "-> %s: %ld\n", ChrPtr(Folder->name), Folder->view); + syslog(LOG_DEBUG, "-> %s: %d\n", ChrPtr(Folder->name), Folder->view); return ((Folder->view == VIEW_CALENDAR) || (Folder->view == VIEW_TASKS) || @@ -215,22 +224,17 @@ int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP) return 0; } - lprintf(9, "ConditionalThisRoomHaveView(%d,%d) = %d\n", - WCC->CurRoom.defview, - CheckThis, - exchangeable_views[WCC->CurRoom.defview][CheckThis] - ); return exchangeable_views [WCC->CurRoom.defview][CheckThis] ; } void tmplput_ROOM_VIEW(StrBuf *Target, WCTemplputParams *TP) { - folder *Folder = (folder *)CTX; + folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->view); } void tmplput_ROOM_DEFVIEW(StrBuf *Target, WCTemplputParams *TP) { - folder *Folder = (folder *)CTX; + folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->defview); } @@ -246,22 +250,26 @@ void InitModule_ROOMVIEWS (void) { + /* we duplicate this, just to be shure its already done. */ + RegisterCTX(CTX_ROOMS); + RegisterCTX(CTX_FLOORS); + initialize_viewdefs(); RegisterNamespace("THISROOM:VIEW_STRING", 0, 1, tmplput_CurrentRoomViewString, NULL, CTX_NONE); RegisterNamespace("ROOM:VIEW_STRING", 1, 2, tmplput_RoomViewString, NULL, CTX_NONE); - RegisterConditional(HKEY("COND:ALLOWED_DEFAULT_VIEW"), 0, ConditionalIsAllowedDefaultView, CTX_NONE); - RegisterConditional(HKEY("COND:THISROOM:DEFAULT_VIEW"), 0, ConditionalThisRoomDefView, CTX_NONE); + RegisterConditional("COND:ALLOWED_DEFAULT_VIEW", 0, ConditionalIsAllowedDefaultView, CTX_NONE); + RegisterConditional("COND:THISROOM:DEFAULT_VIEW", 0, ConditionalThisRoomDefView, CTX_NONE); RegisterNamespace("THISROOM:DEFAULT_VIEW", 0, 0, tmplput_CurrentRoomDefView, NULL, CTX_NONE); RegisterNamespace("ROOM:INFO:DEFVIEW", 0, 1, tmplput_ROOM_DEFVIEW, NULL, CTX_ROOMS); - RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE); + RegisterConditional("COND:ROOM:TYPE_IS", 0, ConditionalIsRoomtype, CTX_NONE); - RegisterConditional(HKEY("COND:THISROOM:HAVE_VIEW"), 0, ConditionalThisRoomHaveView, CTX_NONE); - RegisterConditional(HKEY("COND:ROOM:GROUPDAV_CONTENT"), 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS); + RegisterConditional("COND:THISROOM:HAVE_VIEW", 0, ConditionalThisRoomHaveView, CTX_NONE); + RegisterConditional("COND:ROOM:DAV_CONTENT", 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS); - RegisterConditional(HKEY("COND:THISROOM:CURR_VIEW"), 0, ConditionalThisRoomCurrView, CTX_NONE); + RegisterConditional("COND:THISROOM:CURR_VIEW", 0, ConditionalThisRoomCurrView, CTX_NONE); RegisterNamespace("ROOM:INFO:VIEW", 0, 1, tmplput_ROOM_VIEW, NULL, CTX_ROOMS); RegisterNamespace("ROOM:INFO:COLLECTIONTYPE", 0, 1, tmplput_ROOM_COLLECTIONTYPE, NULL, CTX_ROOMS);