/*
* load the list of floors
*/
-void load_floorlist(void)
+void load_floorlist(StrBuf *Buf)
{
int a;
- char buf[SIZ];
+ int Done = 0;
for (a = 0; a < MAX_FLOORS; ++a)
floorlist[a][0] = 0;
serv_puts("LFLR");
- serv_getln(buf, sizeof buf);
- if (buf[0] != '1') {
+ StrBuf_ServGetln(Buf);
+ if (GetServerStatus(Buf, NULL) != 1) {
strcpy(floorlist[0], "Main Floor");
return;
}
- while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
- extract_token(floorlist[extract_int(buf, 0)], buf, 1, '|', sizeof floorlist[0]);
+ while (!Done && (StrBuf_ServGetln(Buf)>=0)) {
+ if ( (StrLength(Buf)==3) &&
+ !strcmp(ChrPtr(Buf), "000")) {
+ Done = 1;
+ break;
+ }
+ extract_token(floorlist[StrBufExtract_int(Buf, 0, '|')], ChrPtr(Buf), 1, '|', sizeof floorlist[0]);
}
}
*/
void embed_room_banner(char *got, int navbar_style) {
+ wcsession *WCC = WC;
char buf[256];
char buf2[1024];
char with_files[256];
* we want it to remember the URL as a "/dotskip" one instead of
* a "skip" or "gotonext" or something like that.
*/
- if (WC->this_page == NULL)
- WC->this_page = NewStrBuf();
- StrBufPrintf(WC->this_page,
+ if (WCC->Hdr->this_page == NULL)
+ WCC->Hdr->this_page = NewStrBuf();
+ StrBufPrintf(WCC->Hdr->this_page,
"dotskip&room=%s",
ChrPtr(WC->wc_roomname));
default:
wprintf(
"<li class=\"readallmess\">"
- "<a href=\"readfwd\">"
+ "<a href=\"readfwd?startmsg=20&maxmsgs=20&is_summary=0&SortBy=date&SortOrder=2\">"
"<img src=\"static/readallmess3_24x.gif\" "
"alt=\"\">"
"<span class=\"navbar_link\">"
"%s"
"</span></a></li>\n", _("Write mail")
);
+ wprintf(
+ "<li class=\"newmess\">"
+ "<a href=\"javascript:deleteAllSelectedMessages();\">"
+ "<img src=\"static/delete.gif\" "
+ "alt=\"\"><span class=\"navbar_link\">"
+ "%s"
+ "</span></a></li>\n", _("Delete")
+ );
break;
default:
wprintf(
if (GetServerStatus(Buf, &err) != 2) {
serv_puts("GOTO _BASEROOM_");
StrBuf_ServGetln(Buf);
- if (GetServerStatus(Buf, &err) != 2) {
+ /*
+ * well, we know that this is the fallback case,
+ * but we're interested that the first command
+ * didn't work out in first place.
+ */
+ if (GetServerStatus(Buf, NULL) != 2) {
FreeStrBuf(&Buf);
return err;
}
*/
void display_editroom(void)
{
+ StrBuf *Buf;
char buf[SIZ];
char cmd[1024];
char node[256];
tab = bstr("tab");
if (IsEmptyStr(tab)) tab = "admin";
- load_floorlist();
+ Buf = NewStrBuf();
+ load_floorlist(Buf);
+ FreeStrBuf(&Buf);
output_headers(1, 1, 1, 0, 0, 0);
wprintf("<div class=\"fix_scrollbar_bug\">");
wprintf(_("The URL for subscribe/unsubscribe is: "));
wprintf("<TT>%s://%s/listsub</TT></td></tr>\n",
(is_https ? "https" : "http"),
- ChrPtr(WC->http_host));
+ ChrPtr(WC->Hdr->HR.http_host));
/* Public posting? */
wprintf("<tr><td>");
wprintf(_("Allow non-subscribers to mail to this room."));
*/
void display_entroom(void)
{
+ StrBuf *Buf;
int i;
char buf[SIZ];
+ Buf = NewStrBuf();
serv_puts("CRE8 0");
serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
strcpy(WC->ImportantMessage, &buf[4]);
display_main_menu();
+ FreeStrBuf(&Buf);
return;
}
wprintf("<tr class=\"odd\"><td>");
wprintf(_("Resides on floor: "));
wprintf("</td><td>");
- load_floorlist();
+ load_floorlist(Buf);
wprintf("<select name=\"er_floor\" size=\"1\">\n");
for (i = 0; i < 128; ++i)
if (!IsEmptyStr(floorlist[i])) {
do_template("endbox", NULL);
wDumpContent(1);
+ FreeStrBuf(&Buf);
}
StrBuf *FloorDiv;
FloorDiv = NewStrBuf();
- StrBufAppendBuf(FloorDiv, WCC->UrlFragment2, 0);
+ StrBufExtract_token(FloorDiv, WCC->Hdr->HR.ReqLine, 0, '/');
set_preference("floordiv_expanded", FloorDiv, 1);
WCC->floordiv_expanded = FloorDiv;
}
*/
void list_all_rooms_by_floor(const char *viewpref) {
+ StrBuf *Buf;
char buf[SIZ];
int swap = 0;
struct folder *fold = NULL;
do_iconbar_view(WC->cache_fold, WC->cache_max_folders, WC->cache_num_floors);
return;
}
+ Buf = NewStrBuf();
/** Grab the floor table so we know how to build the list... */
- load_floorlist();
-
+ load_floorlist(Buf);
+ FreeStrBuf(&Buf);
/** Start with the mailboxes */
max_folders = 1;
alloc_folders = 1;
StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err); /* '100', we hope */
if (ChrPtr(Buf)[0] == '1') while(StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err), strcmp(ChrPtr(Buf), "000")) {
int a;
- const char *floorNum;
+ const char *floorNum = NULL;
floor = NewHash(1, NULL);
for(a=0; a<FLOOR_PARAM_LEN; a++) {
Buf2 = NewStrBuf();
StrBufTCP_read_line(buf, &WC->serv_sock, 0, &Err);
if (ChrPtr(buf)[0] == '1') while(StrBufTCP_read_line(buf, &WC->serv_sock, 0, &Err), strcmp(ChrPtr(buf), "000")) {
int i;
- const char *rmName;
+ const char *rmName = NULL;
room = NewHash(1, NULL);
for(i=0; i<ROOM_PARAM_LEN; i++) {
buf2 = NewStrBuf();
(WCC->is_mailbox) ));
}
+int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+
+ if ((WCC == NULL) ||
+ (TP->Tokens->nParameters < 3) ||
+ (TP->Tokens->Params[2]->Type != TYPE_STR)||
+ (TP->Tokens->Params[2]->len < 7))
+ return 0;
+
+ switch(WCC->wc_view) {
+ case VIEW_BBS:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_BBS"));
+ case VIEW_MAILBOX:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_MAILBOX"));
+ case VIEW_ADDRESSBOOK:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_ADDRESSBOOK"));
+ case VIEW_TASKS:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_TASKS"));
+ case VIEW_NOTES:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_NOTES"));
+ case VIEW_WIKI:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_WIKI"));
+ case VIEW_JOURNAL:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_JOURNAL"));
+ case VIEW_CALENDAR:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_CALENDAR"));
+ case VIEW_CALBRIEF:
+ return (!strcasecmp(TP->Tokens->Params[2]->Start, "VIEW_CALBRIEF"));
+ default:
+ return 0;
+ }
+}
+
void
InitModule_ROOMOPS
(void)
WebcitAddUrlHandler(HKEY("json_roomflr"), jsonRoomFlr, 0);
RegisterNamespace("ROOMBANNER", 0, 1, tmplput_roombanner, 0);
+ RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE);
RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PERMANENT"), 0, ConditionalRoomHas_QR_PERMANENT, CTX_NONE);
RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_INUSE"), 0, ConditionalRoomHas_QR_INUSE, CTX_NONE);
RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PRIVATE"), 0, ConditionalRoomHas_QR_PRIVATE, CTX_NONE);
RegisterNamespace("ROOM:INFO", 1, 2, tmplput_ROOM_Value, CTX_ROOMS);
}
+
+
+void
+SessionDestroyModule_ROOMOPS
+(wcsession *sess)
+{
+ if (sess->cache_fold != NULL) {
+ free(sess->cache_fold);
+ }
+
+ free_march_list(sess);
+}
/*@}*/