]> code.citadel.org Git - citadel.git/blobdiff - webcit/roomviews.c
indent -kr -i8 -brf -bbb -fnc -l132 -nce on all of webcit-classic
[citadel.git] / webcit / roomviews.c
index 42e4be4fe9ab8ab3d34f0f5cd9b696ec4d3ca18d..6364049c8905e021b7694856e418fc56dec1b19c 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * Lots of different room-related operations.
  */
@@ -5,32 +6,43 @@
 #include "webcit.h"
 #include "webserver.h"
 
-char *viewdefs[VIEW_MAX];                      /* the different kinds of available views */
+char *viewdefs[VIEW_MAX];
 
-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 */
+/*
+ * 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 */
 };
 
-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) */
+/*
+ * 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 */
 };
 
 /*
@@ -46,16 +58,15 @@ void initialize_viewdefs(void) {
        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(CTX_ROOMS);
 
-void tmplput_ROOM_COLLECTIONTYPE(StrBuf *Target, WCTemplputParams *TP) 
-{
-       folder *Folder = (folder *)CTX;
-       
-       switch(Folder->view) {
+       switch (Folder->view) {
        case VIEW_CALENDAR:
                StrBufAppendBufPlain(Target, HKEY("vevent"), 0);
                break;
@@ -79,50 +90,37 @@ void tmplput_ROOM_COLLECTIONTYPE(StrBuf *Target, WCTemplputParams *TP)
 
 
 
-int ConditionalRoomHasGroupdavContent(StrBuf *Target, WCTemplputParams *TP)
-{
-       folder *Folder = (folder *)CTX;
+int ConditionalRoomHasGroupdavContent(StrBuf * Target, WCTemplputParams * TP) {
+       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) || 
-               (Folder->view == VIEW_ADDRESSBOOK) ||
-               (Folder->view == VIEW_NOTES) ||
-               (Folder->view == VIEW_JOURNAL) );
+       return ((Folder->view == VIEW_CALENDAR) ||
+               (Folder->view == VIEW_TASKS) ||
+               (Folder->view == VIEW_ADDRESSBOOK) || (Folder->view == VIEW_NOTES) || (Folder->view == VIEW_JOURNAL));
 }
 
 
 
 
-int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP)
-{
+int ConditionalIsRoomtype(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
 
-       if ((WCC == NULL) ||
-           (TP->Tokens->nParameters < 3))
-       {
-               return ((WCC->CurRoom.view < VIEW_BBS) || 
-                       (WCC->CurRoom.view > VIEW_MAX));
+       if ((WCC == NULL) || (TP->Tokens->nParameters < 3)) {
+               return ((WCC->CurRoom.view < VIEW_BBS) || (WCC->CurRoom.view > VIEW_MAX));
        }
 
        return WCC->CurRoom.view == GetTemplateTokenNumber(Target, TP, 2, VIEW_BBS);
 }
 
 
-void tmplput_CurrentRoomViewString(StrBuf *Target, WCTemplputParams *TP) 
-{
+void tmplput_CurrentRoomViewString(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
        StrBuf *Buf;
 
-       if ((WCC == NULL) ||
-           (WCC->CurRoom.defview >= VIEW_MAX) || 
-           (WCC->CurRoom.defview < VIEW_BBS))
-       {
+       if ((WCC == NULL) || (WCC->CurRoom.defview >= VIEW_MAX) || (WCC->CurRoom.defview < VIEW_BBS)) {
                LogTemplateError(Target, "Token", ERR_PARM2, TP,
-                                "Roomview [%ld] not valid\n", 
-                                (WCC != NULL)? 
-                                WCC->CurRoom.defview : -1);
+                                "Roomview [%ld] not valid\n", (WCC != NULL) ? WCC->CurRoom.defview : -1);
                return;
        }
 
@@ -131,17 +129,13 @@ void tmplput_CurrentRoomViewString(StrBuf *Target, WCTemplputParams *TP)
        FreeStrBuf(&Buf);
 }
 
-void tmplput_RoomViewString(StrBuf *Target, WCTemplputParams *TP) 
-{
+void tmplput_RoomViewString(StrBuf * Target, WCTemplputParams * TP) {
        long CheckThis;
        StrBuf *Buf;
 
        CheckThis = GetTemplateTokenNumber(Target, TP, 0, 0);
-       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
-       {
-               LogTemplateError(Target, "Token", ERR_PARM2, TP,
-                                "Roomview [%ld] not valid\n", 
-                                CheckThis);
+       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS)) {
+               LogTemplateError(Target, "Token", ERR_PARM2, TP, "Roomview [%ld] not valid\n", CheckThis);
                return;
        }
 
@@ -152,28 +146,23 @@ void tmplput_RoomViewString(StrBuf *Target, WCTemplputParams *TP)
 
 
 
-int ConditionalIsAllowedDefaultView(StrBuf *Target, WCTemplputParams *TP)
-{
+int ConditionalIsAllowedDefaultView(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
        long CheckThis;
-       
+
        if (WCC == NULL)
                return 0;
 
        CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
-       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
-       {
-               LogTemplateError(Target, "Conditional", ERR_PARM2, TP,
-                                "Roomview [%ld] not valid\n", 
-                                CheckThis);
+       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS)) {
+               LogTemplateError(Target, "Conditional", ERR_PARM2, TP, "Roomview [%ld] not valid\n", CheckThis);
                return 0;
        }
 
        return allowed_default_views[CheckThis] != 0;
 }
 
-int ConditionalThisRoomDefView(StrBuf *Target, WCTemplputParams *TP)
-{
+int ConditionalThisRoomDefView(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
        long CheckThis;
 
@@ -184,8 +173,7 @@ int ConditionalThisRoomDefView(StrBuf *Target, WCTemplputParams *TP)
        return CheckThis == WCC->CurRoom.defview;
 }
 
-int ConditionalThisRoomCurrView(StrBuf *Target, WCTemplputParams *TP)
-{
+int ConditionalThisRoomCurrView(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
        long CheckThis;
 
@@ -196,65 +184,59 @@ int ConditionalThisRoomCurrView(StrBuf *Target, WCTemplputParams *TP)
        return CheckThis == WCC->CurRoom.view;
 }
 
-int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP)
-{
+int ConditionalThisRoomHaveView(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
        long CheckThis;
-       
+
        if (WCC == NULL)
                return 0;
 
        CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
-       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
-       {
-               LogTemplateError(Target, "Conditional", ERR_PARM2, TP,
-                                "Roomview [%ld] not valid\n", 
-                                CheckThis);
+       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS)) {
+               LogTemplateError(Target, "Conditional", ERR_PARM2, TP, "Roomview [%ld] not valid\n", CheckThis);
                return 0;
        }
 
-       return 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;
+void tmplput_ROOM_VIEW(StrBuf * Target, WCTemplputParams * TP) {
+       folder *Folder = (folder *) CTX(CTX_ROOMS);
        StrBufAppendPrintf(Target, "%d", Folder->view);
 }
-void tmplput_ROOM_DEFVIEW(StrBuf *Target, WCTemplputParams *TP) 
-{
-       folder *Folder = (folder *)CTX;
+void tmplput_ROOM_DEFVIEW(StrBuf * Target, WCTemplputParams * TP) {
+       folder *Folder = (folder *) CTX(CTX_ROOMS);
        StrBufAppendPrintf(Target, "%d", Folder->defview);
 }
 
 
-void tmplput_CurrentRoomDefView(StrBuf *Target, WCTemplputParams *TP) 
-{
+void tmplput_CurrentRoomDefView(StrBuf * Target, WCTemplputParams * TP) {
        wcsession *WCC = WC;
 
        StrBufAppendPrintf(Target, "%d", WCC->CurRoom.defview);
 }
 
-void 
-InitModule_ROOMVIEWS
-(void)
-{
+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);