wDumpContent(0);
}
-
+/*
+ * Mobile browser view of message
+ *
+ * @param msg_num_as_string Message number as a string instead of as a long int
+ */
+void mobile_message_view(void) {
+ long msgnum = 0L;
+ msgnum = StrTol(WC->UrlFragment1);
+ output_headers(1, 0, 0, 0, 0, 1);
+ begin_burst();
+ do_template("msgcontrols", NULL);
+ read_message(msgnum,1, "");
+ wDumpContent(0);
+}
/**
* \brief Display a message's headers
(WC->summ[num].is_new ? "bold" : "normal"),
WC->summ[num].msgnum
);
- wprintf("<span>%s</span>",WC->summ[num].from);
+ wprintf("<span class=\"from\">%s</span>",WC->summ[num].from);
wprintf("<span style=\"float: right;\">");
webcit_fmt_date(datebuf, WC->summ[num].date, 1); /* brief */
- escputs(datebuf);
+ escputs(datebuf);
wprintf("</span><br/><span class=\"subject\">");
- wprintf(WC->summ[num].subj);
+ escputs(WC->summ[num].subj);
wprintf("</span></div><div id=\"m_%ld\" class=\"msgview\" onMouseDown=\"\"></div></div>",WC->summ[num].msgnum);
}
* \return the enum matching the string; defaults to RDate
*/
//SortByEnum
-int StrToESort (StrBuf *sortby)
+int StrToESort (const StrBuf *sortby)
{
int result = eDate;
int highest_displayed = 0;
struct addrbookent *addrbook = NULL;
int num_ab = 0;
- StrBuf *sortby = NULL;
+ const StrBuf *sortby = NULL;
//SortByEnum
int SortBy = eRDate;
- StrBuf *sortpref_name;
- StrBuf *sortpref_value;
+ const StrBuf *sortpref_value;
int bbs_reverse = 0;
struct wcsession *WCC = WC; /* This is done to make it run faster; WC is a function */
is_summary = (ibstr("is_summary") && !WCC->is_mobile);
if (maxmsgs == 0) maxmsgs = DEFAULT_MAXMSGS;
- sortpref_name = NewStrBuf ();
- StrBufPrintf(sortpref_name, "sort %s", WCC->wc_roomname);
- get_pref(sortpref_name, &sortpref_value);
+ sortpref_value = get_room_pref("sort");
- sortby = NewStrBufPlain(bstr("sortby"), -1);
+ sortby = sbstr("sortby");
if ( (!IsEmptyStr(ChrPtr(sortby))) &&
(strcasecmp(ChrPtr(sortby), ChrPtr(sortpref_value)) != 0)) {
- set_pref(sortpref_name, sortby, 1);
+ set_room_pref("sort", NewStrBufDup(sortby), 1);
sortpref_value = NULL;
sortpref_value = sortby;
}
- FreeStrBuf(&sortby);
- FreeStrBuf(&sortpref_name);
SortBy = StrToESort(sortpref_value);
/** message board sort */
if (SortBy == eReverse) {
maxmsgs = 9999999;
}
- if (is_summary || WCC->is_mobile) { /**< fetch header summary */
+ if (is_summary) { /**< fetch header summary */
snprintf(cmd, sizeof(cmd), "MSGS %s|%s||1",
(!strcmp(oper, "do_search") ? "SEARCH" : "ALL"),
(!strcmp(oper, "do_search") ? bstr("query") : "")
}
if (WCC->is_mobile) {
maxmsgs = 20;
+ snprintf(cmd, sizeof(cmd), "MSGS %s|%s||1",
+ (!strcmp(oper, "do_search") ? "SEARCH" : "ALL"),
+ (!strcmp(oper, "do_search") ? bstr("query") : "")
+ );
SortBy = eRDate;
}
*/
void post_message(void)
{
- urlcontent *u;
- void *U;
char buf[1024];
- char *encoded_subject = NULL;
+ StrBuf *encoded_subject = NULL;
static long dont_post = (-1L);
struct wc_attachment *att, *aptr;
int is_anonymous = 0;
- const char *display_name;
- long dpLen = 0;
+ const StrBuf *display_name = NULL;
struct wcsession *WCC = WC;
- char *ptr = NULL;
-
+
if (havebstr("force_room")) {
gotoroom(bstr("force_room"));
}
- if (GetHash(WC->urlstrings, HKEY("display_name"), &U)) {
- u = (urlcontent*) U;
- display_name = u->url_data;
- dpLen = u->url_data_size;
- }
- else {
- display_name="";
- }
- if (!strcmp(display_name, "__ANONYMOUS__")) {
- display_name = "";
- is_anonymous = 1;
+ if (havebstr("display_name")) {
+ display_name = sbstr("display_name");
+ if (!strcmp(ChrPtr(display_name), "__ANONYMOUS__")) {
+ display_name = NULL;
+ is_anonymous = 1;
+ }
}
if (WCC->upload_length > 0) {
"saved this message."));
} else {
const char CMD[] = "ENT0 1|%s|%d|4|%s|%s||%s|%s|%s|%s|%s";
- const char *Recp = "";
- const char *Cc = "";
- const char *Bcc = "";
- const char *Wikipage = "";
- const char *my_email_addr = "";
- char *CmdBuf = NULL;;
- long len = 0;
- size_t nLen;
- char references[SIZ] = "";
- size_t references_len = 0;
-
- safestrncpy(references, bstr("references"), sizeof references);
- lprintf(9, "Converting: %s\n", references);
- for (ptr=references; *ptr != 0; ++ptr) {
- if (*ptr == '|') *ptr = '!';
- ++references_len;
- }
- lprintf(9, "Converted: %s\n", references);
-
+ const StrBuf *Recp = NULL;
+ const StrBuf *Cc = NULL;
+ const StrBuf *Bcc = NULL;
+ const StrBuf *Wikipage = NULL;
+ const StrBuf *my_email_addr = NULL;
+ StrBuf *CmdBuf = NULL;;
+ StrBuf *references = NULL;
+
+ if (havebstr("references"))
+ {
+ const StrBuf *ref = sbstr("references");
+ references = NewStrBufPlain(ChrPtr(ref), StrLength(ref));
+ lprintf(9, "Converting: %s\n", ChrPtr(references));
+ StrBufReplaceChars(references, '|', '!');
+ lprintf(9, "Converted: %s\n", ChrPtr(references));
+ }
if (havebstr("subject")) {
- char *Subj;
- size_t SLen;
+ const StrBuf *Subj;
/*
* make enough room for the encoded string;
* plus the QP header
*/
- Subj = xbstr("subject", &SLen);
- len = SLen * 3 + 32;
- encoded_subject = malloc (len);
- len = webcit_rfc2047encode(encoded_subject, len, Subj, SLen);
- if (len < 0) {
- free (encoded_subject);
- return;
- }
- }
- len += sizeof (CMD) + dpLen;
- Recp = xbstr("recp", &nLen);
- len += nLen;
- Cc = xbstr("cc", &nLen);
- len += nLen;
- Bcc = xbstr("bcc", &nLen);
- len += nLen;
- Wikipage = xbstr("wikipage", &nLen);
- len += nLen;
- my_email_addr = xbstr("my_email_addr", &nLen);
- len += nLen;
- len += references_len;
-
- CmdBuf = (char*) malloc (len + 11);
-
- snprintf(CmdBuf, len + 1, CMD,
- Recp,
- is_anonymous,
- (encoded_subject ? encoded_subject : ""),
- display_name,
- Cc,
- Bcc,
- Wikipage,
- my_email_addr,
- references);
+ Subj = sbstr("subject");
+
+ StrBufRFC2047encode(&encoded_subject, Subj);
+ }
+ Recp = sbstr("recp");
+ Cc = sbstr("cc");
+ Bcc = sbstr("bcc");
+ Wikipage = sbstr("wikipage");
+ my_email_addr = sbstr("my_email_addr");
+
+ CmdBuf = NewStrBufPlain(NULL,
+ sizeof (CMD) +
+ StrLength(Recp) +
+ StrLength(encoded_subject) +
+ StrLength(Cc) +
+ StrLength(Bcc) +
+ StrLength(Wikipage) +
+ StrLength(my_email_addr) +
+ StrLength(references));
+
+ StrBufPrintf(CmdBuf,
+ CMD,
+ ChrPtr(Recp),
+ is_anonymous,
+ ChrPtr(encoded_subject),
+ ChrPtr(display_name),
+ ChrPtr(Cc),
+ ChrPtr(Bcc),
+ ChrPtr(Wikipage),
+ ChrPtr(my_email_addr),
+ ChrPtr(references));
+
lprintf(9, "%s\n", CmdBuf);
- serv_puts(CmdBuf);
+ serv_puts(ChrPtr(CmdBuf));
serv_getln(buf, sizeof buf);
- free (CmdBuf);
- if (encoded_subject) free(encoded_subject);
+ FreeStrBuf(&CmdBuf);
+ FreeStrBuf(&encoded_subject);
if (buf[0] == '4') {
post_mime_to_server();
if ( (havebstr("recp"))
char buf[SIZ];
StrBuf *ebuf;
long now;
- char *display_name;
+ const StrBuf *display_name = NULL;
struct wc_attachment *att;
int recipient_required = 0;
int subject_required = 0;
int recipient_bad = 0;
int is_anonymous = 0;
long existing_page = (-1L);
- size_t dplen;
struct wcsession *WCC = WC;
now = time(NULL);
gotoroom(bstr("force_room"));
}
- display_name = xbstr("display_name", &dplen);
- if (!strcmp(display_name, "__ANONYMOUS__")) {
- display_name = "";
- dplen = 0;
+ display_name = sbstr("display_name");
+ if (!strcmp(ChrPtr(display_name), "__ANONYMOUS__")) {
+ display_name = NULL;
is_anonymous = 1;
}
/* Now check our actual recipients if there are any */
if (recipient_required) {
- const char *Recp = "";
- const char *Cc = "";
- const char *Bcc = "";
- const char *Wikipage = "";
- char *CmdBuf = NULL;;
- size_t len = 0;
- size_t nLen;
+ const StrBuf *Recp = NULL;
+ const StrBuf *Cc = NULL;
+ const StrBuf *Bcc = NULL;
+ const StrBuf *Wikipage = NULL;
+ StrBuf *CmdBuf = NULL;;
const char CMD[] = "ENT0 0|%s|%d|0||%s||%s|%s|%s";
- len = sizeof(CMD) + dplen;
- Recp = xbstr("recp", &nLen);
- len += nLen;
- Cc = xbstr("cc", &nLen);
- len += nLen;
- Bcc = xbstr("bcc", &nLen);
- len += nLen;
- Wikipage = xbstr("wikipage", &nLen);
- len += nLen;
+ Recp = sbstr("recp");
+ Cc = sbstr("cc");
+ Bcc = sbstr("bcc");
+ Wikipage = sbstr("wikipage");
-
- CmdBuf = (char*) malloc (len + 1);
-
- snprintf(CmdBuf, len, CMD,
- Recp, is_anonymous,
- display_name,
- Cc, Bcc, Wikipage);
- serv_puts(CmdBuf);
+ CmdBuf = NewStrBufPlain(NULL,
+ sizeof (CMD) +
+ StrLength(Recp) +
+ StrLength(display_name) +
+ StrLength(Cc) +
+ StrLength(Bcc) +
+ StrLength(Wikipage));
+
+ StrBufPrintf(CmdBuf,
+ CMD,
+ ChrPtr(Recp),
+ is_anonymous,
+ ChrPtr(display_name),
+ ChrPtr(Cc),
+ ChrPtr(Bcc),
+ ChrPtr(Wikipage));
+ serv_puts(ChrPtr(CmdBuf));
serv_getln(buf, sizeof buf);
+ FreeStrBuf(&CmdBuf);
if (!strncmp(buf, "570", 3)) { /** 570 means we have an invalid recipient listed */
if (havebstr("recp") &&
* The following template embeds the TinyMCE richedit control, and automatically
* transforms the textarea into a richedit textarea.
*/
- do_template("richedit");
+ do_template("richedit", NULL);
/** Enumerate any attachments which are already in place... */
wprintf("<div class=\"attachment buttons\"><img src=\"static/diskette_24x.gif\" class=\"imgedit\" > ");
WebcitAddUrlHandler(HKEY("confirm_move_msg"), confirm_move_msg, 0);
WebcitAddUrlHandler(HKEY("msg"), embed_message, NEED_URL|AJAX);
WebcitAddUrlHandler(HKEY("printmsg"), print_message, NEED_URL);
+ WebcitAddUrlHandler(HKEY("mobilemsg"), mobile_message_view, NEED_URL);
WebcitAddUrlHandler(HKEY("msgheaders"), display_headers, NEED_URL);
return ;
}