X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Froomviews.c;h=18563000db4ebc8062d6d7c76d42627c2d4319d2;hp=859e95394bdd81d234ec441d5bbd63ef9ab71a4e;hb=c73091a2ae896b6be5aa94b911c1c89d76a85688;hpb=74f3aced8baf68deb4982960b350c5009f6912fd diff --git a/webcit/roomviews.c b/webcit/roomviews.c index 859e95394..18563000d 100644 --- a/webcit/roomviews.c +++ b/webcit/roomviews.c @@ -1,62 +1,70 @@ /* - * $Id$ * Lots of different room-related operations. */ #include "webcit.h" #include "webserver.h" -char *viewdefs[VIEW_MAX]; /* the different kinds of available views */ - -ROOM_VIEWS exchangeable_views[VIEW_MAX][VIEW_MAX] = { /* the different kinds of available views for a view */ -{VIEW_BBS, VIEW_MAILBOX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX }, -{VIEW_BBS, VIEW_MAILBOX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX }, -{VIEW_MAX, VIEW_MAX, VIEW_ADDRESSBOOK, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX }, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX /*VIEW_CALBRIEF*/, VIEW_MAX, VIEW_MAX }, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_TASKS, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, }, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_NOTES, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, }, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_WIKI, VIEW_MAX, VIEW_MAX, VIEW_MAX}, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX/*VIEW_CALBRIEF*/, VIEW_MAX, VIEW_MAX}, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_JOURNAL, VIEW_MAX }, -{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_BLOG }, - }; -/* the brief calendar view is disabled: VIEW_CALBRIEF */ - -ROOM_VIEWS allowed_default_views[VIEW_MAX] = { - 1, /* VIEW_BBS Bulletin board view */ - 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) */ +char *viewdefs[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 */ + 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: @@ -84,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) || @@ -216,17 +224,17 @@ int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP) return 0; } - return exchangeable_views [WCC->CurRoom.defview][CheckThis] != VIEW_MAX; + 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); } @@ -242,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);