Detect screen dimensions _before_ attaching to the server.
[citadel.git] / webcit / messages.c
index acb2afee2669d971775b3d4db86473853d4857a9..5ae3eb0d491601d2e4d5c6c51e01a534e715c41e 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "webcit.h"
 #include "webserver.h"
-#include "groupdav.h"
+#include "dav.h"
 #include "calendar.h"
 
 HashList *MsgHeaderHandler = NULL;
@@ -1007,10 +1007,10 @@ void post_message(void)
                const StrBuf *my_email_addr = NULL;
                StrBuf *CmdBuf = NULL;
                StrBuf *references = NULL;
-               int saving_to_drafts;
-               long HeaderLen;
+               int saving_to_drafts = 0;
+               long HeaderLen = 0;
 
-               saving_to_drafts = !strcasecmp(bstr("submit_action"), "drafts");
+               saving_to_drafts = !strcasecmp(bstr("submit_action"), "draft");
                Buf = NewStrBuf();
 
                if (saving_to_drafts) {
@@ -1113,7 +1113,7 @@ void post_message(void)
                                if (saving_to_drafts) {
                                        AppendImportantMessage(_("Message has been saved to Drafts.\n"), -1);
                                        gotoroom(WCC->CurRoom.name);
-                                       display_enter();
+                                       readloop(readnew, eUseDefault);
                                        FreeStrBuf(&Buf);
                                        return;
                                } else if (  (havebstr("recp"))
@@ -1127,8 +1127,7 @@ void post_message(void)
                                }
                                dont_post = lbstr("postseq");
                        } else {
-                               /* FIXME */
-                               syslog(9, "\033[31m%s:%d: server post error: %s\033[0m", __FILE__, __LINE__, ChrPtr(Buf) + 4);
+                               syslog(9, "%s:%d: server post error: %s", __FILE__, __LINE__, ChrPtr(Buf) + 4);
                                AppendImportantMessage(ChrPtr(Buf) + 4, StrLength(Buf) - 4);
                                display_enter();
                                if (saving_to_drafts) gotoroom(WCC->CurRoom.name);
@@ -1308,7 +1307,6 @@ void display_enter(void)
        const StrBuf *display_name = NULL;
        int recipient_required = 0;
        int subject_required = 0;
-       int recipient_bad = 0;
        int is_anonymous = 0;
        wcsession *WCC = WC;
        int i = 0;
@@ -1324,7 +1322,9 @@ void display_enter(void)
                is_anonymous = 1;
        }
 
-       /* First test to see whether this is a room that requires recipients to be entered */
+       /*
+        * First, do we have permission to enter messages in this room at all?
+        */
        Line = NewStrBuf();
        serv_puts("ENT0 0");
        StrBuf_ServGetln(Line);
@@ -1595,16 +1595,15 @@ void display_enter(void)
 
                rc = GetServerStatusMsg(CmdBuf, &Result, 0, 0);
 
-               if (Result == 570) {    /* 570 means we have an invalid recipient listed */
-                       if (havebstr("recp") && 
-                           havebstr("cc"  ) && 
-                           havebstr("bcc" )) {
-                               recipient_bad = 1; /* TODO: and now????? */
-                       }
+               if (    (Result == 570)         /* invalid or missing recipient(s) */
+                       || (Result == 550)      /* higher access required to send Internet mail */
+               ) {
+                       /* These errors will have been displayed and are excusable */
                }
                else if (rc != 2) {     /* Any other error means that we cannot continue */
-                       wc_printf("<em>%s</em><br>\n", ChrPtr(CmdBuf) +4);      /* TODO -> important message */
+                       AppendImportantMessage(ChrPtr(CmdBuf) + 4, StrLength(CmdBuf) - 4);
                        FreeStrBuf(&CmdBuf);
+                       readloop(readnew, eUseDefault);
                        return;
                }
                FreeStrBuf(&CmdBuf);