X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Froomviews.c;h=18563000db4ebc8062d6d7c76d42627c2d4319d2;hb=HEAD;hp=42e4be4fe9ab8ab3d34f0f5cd9b696ec4d3ca18d;hpb=d5453f033f5328096c02836c6ad7dac3f2fdf6ec;p=citadel.git diff --git a/webcit/roomviews.c b/webcit/roomviews.c index 42e4be4fe..d16b70530 100644 --- a/webcit/roomviews.c +++ b/webcit/roomviews.c @@ -3,57 +3,68 @@ */ #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, 1 }, /* bulletin board */ - { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1 }, /* mailbox summary */ - { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, /* address book */ - { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, /* calendar */ - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, /* tasks */ - { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, /* notes */ - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, /* wiki */ - { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }, /* brief calendar */ - { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, /* journal */ - { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1 } /* blog */ -}; +char *viewdefs[VIEW_MAX]; -ROOM_VIEWS allowed_default_views[VIEW_MAX] = { - 1, /* VIEW_BBS Bulletin board view */ +/* + * 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 view */ - 1, /* VIEW_CALENDAR Calendar view */ - 1, /* VIEW_TASKS Tasks view */ - 1, /* VIEW_NOTES Notes view */ - 1, /* VIEW_WIKI Wiki view */ - 0, /* VIEW_CALBRIEF Brief Calendar view */ - 0, /* VIEW_JOURNAL Journal view */ - 0 /* VIEW_BLOG Blog view (not yet implemented) */ + 1, /* VIEW_ADDRESSBOOK Address book */ + 1, /* VIEW_CALENDAR Calendar */ + 1, /* VIEW_TASKS Tasks */ + 1, /* VIEW_NOTES Notes */ + 1, /* VIEW_WIKI Wiki */ + 0, /* VIEW_CALBRIEF Brief Calendar */ + 0, /* VIEW_JOURNAL Journal */ + 0, /* VIEW_DRAFTS Drafts */ + 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: @@ -81,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) || @@ -218,12 +229,12 @@ int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP) 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); } @@ -239,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);