char *viewdefs[9]; /**< the different kinds of available views */
+void display_whok(void);
+
/*
* Initialize the viewdefs with localized strings
*/
output_headers(1, 1, 1, 0, 0, 0);
svput("BOXTITLE", WCS_STRING, _("Zapped (forgotten) rooms"));
- do_template("beginbox");
+ do_template("beginbox", NULL);
listrms("LZRM -1");
wprintf("<br /><br />\n");
wprintf(_("Click on any room to un-zap it and goto that room.\n"));
- do_template("endbox");
+ do_template("endbox", NULL);
wDumpContent(1);
}
int i;
wprintf("<form name=\"viewomatic\" action=\"changeview\">\n");
- wprintf("\t<div style=\"display: inline;\">\n\t<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("\t<div style=\"display: inline;\">\n\t<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<label for=\"view_name\">");
wprintf(_("View as:"));
wprintf("</label> "
*/
void embed_search_o_matic(void) {
wprintf("<form name=\"searchomatic\" action=\"do_search\">\n");
- wprintf("<div style=\"display: inline;\"><input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<div style=\"display: inline;\"><input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<label for=\"search_name\">");
wprintf(_("Search: "));
wprintf("</label><input ");
);
svcallback("ROOMPIC", embed_room_graphic);
svcallback("ROOMINFO", readinfo);
- svcallback("VIEWOMATIC", embed_view_o_matic);
+ svcallback("VIEWOMATIC", embed_view_o_matic);
svcallback("SEARCHOMATIC", embed_search_o_matic);
- svcallback("START", offer_start_page);
-
- do_template("roombanner");
- if (navbar_style != navbar_none) {
+ svcallback("START", offer_start_page);
+
+ do_template("roombanner", NULL);
+ // roombanner contains this for mobile
+ if (navbar_style != navbar_none && !WC->is_mobile) {
wprintf("<div id=\"navbar\"><ul>");
er_flags2 = extract_int(&buf[4], 7);
wprintf("<form method=\"POST\" action=\"editroom\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<ul><li>");
wprintf(_("Name of room: "));
extract_token(remote_room, buf, 1, '|', sizeof remote_room);
if (!IsEmptyStr(node)) {
wprintf("<form method=\"POST\" action=\"netedit\">");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<tr><td>%s</td>\n", node);
wprintf("<td>");
extract_token(node, not_shared_with, i, '\n', sizeof node);
if (!IsEmptyStr(node)) {
wprintf("<form method=\"POST\" action=\"netedit\">");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<tr><td>");
escputs(node);
wprintf("</td><td>"
wprintf("<br /><form method=\"POST\" action=\"netedit\">\n"
"<input type=\"hidden\" NAME=\"tab\" VALUE=\"listserv\">\n"
"<input type=\"hidden\" NAME=\"prefix\" VALUE=\"listrecp|\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<input type=\"text\" id=\"add_as_listrecp\" NAME=\"line\">\n");
wprintf("<input type=\"submit\" NAME=\"add_button\" VALUE=\"%s\">", _("Add"));
wprintf("</form>\n");
wprintf("<br /><form method=\"POST\" action=\"netedit\">\n"
"<input type=\"hidden\" NAME=\"tab\" VALUE=\"listserv\">\n"
"<input type=\"hidden\" NAME=\"prefix\" VALUE=\"digestrecp|\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<input type=\"text\" id=\"add_as_digestrecp\" NAME=\"line\">\n");
wprintf("<input type=\"submit\" NAME=\"add_button\" VALUE=\"%s\">", _("Add"));
wprintf("</form>\n");
}
wprintf("<br /><form method=\"POST\" action=\"set_room_policy\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<table border=0 cellspacing=5>\n");
wprintf("<tr><td>");
wprintf(_("Message expire policy for this room"));
"<tr>"
"<input type=\"hidden\" name=\"tab\" value=\"feeds\">"
"<input type=\"hidden\" name=\"prefix\" value=\"pop3client|\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<td>");
wprintf("<input type=\"text\" id=\"add_as_pop3host\" NAME=\"line_pop3host\">\n");
wprintf("</td>");
"<tr>"
"<input type=\"hidden\" name=\"tab\" value=\"feeds\">"
"<input type=\"hidden\" name=\"prefix\" value=\"rssclient|\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<td>");
wprintf("<input type=\"text\" id=\"add_as_pop3host\" size=\"72\" "
"maxlength=\"256\" name=\"line_pop3host\">\n");
wprintf("<br /><br />");
wprintf("<CENTER><form method=\"POST\" action=\"do_invt_kick\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<input type=\"hidden\" NAME=\"tab\" VALUE=\"access\">\n");
wprintf("<select NAME=\"username\" SIZE=\"10\" style=\"width:100%%\">\n");
serv_puts("WHOK");
wprintf("<CENTER><form method=\"POST\" action=\"do_invt_kick\">\n");
wprintf("<input type=\"hidden\" NAME=\"tab\" VALUE=\"access\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf(_("Invite:"));
wprintf(" ");
wprintf("<input type=\"text\" name=\"username\" id=\"username_id\" style=\"width:100%%\"><br />\n"
output_headers(1, 1, 1, 0, 0, 0);
svprintf(HKEY("BOXTITLE"), WCS_STRING, _("Create a new room"));
- do_template("beginbox");
+ do_template("beginbox", NULL);
wprintf("<form name=\"create_room_form\" method=\"POST\" action=\"entroom\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<table class=\"altern\"> ");
fmout("LEFT");
}
- do_template("endbox");
+ do_template("endbox", NULL);
wDumpContent(1);
}
output_headers(1, 1, 1, 0, 0, 0);
svprintf(HKEY("BOXTITLE"), WCS_STRING, _("Go to a hidden room"));
- do_template("beginbox");
+ do_template("beginbox", NULL);
wprintf("<p>");
wprintf(_("If you know the name of a hidden (guess-name) or "
wprintf("</p>");
wprintf("<form method=\"post\" action=\"goto_private\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<table class=\"altern\"> "
"<tr class=\"even\"><td>");
);
wprintf("</div></form>\n");
- do_template("endbox");
+ do_template("endbox", NULL);
wDumpContent(1);
}
"to do?<br />\n"), WC->wc_roomname);
wprintf("<form method=\"POST\" action=\"zap\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<input type=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">", _("Zap this room"));
wprintf(" ");
wprintf("<input type=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">", _("Cancel"));
if ( (strcasecmp(floor_name, old_floor_name))
&& (!IsEmptyStr(old_floor_name)) ) {
/* End inner box */
- do_template("endbox");
+ do_template("endbox", NULL);
wprintf("<br>");
++num_boxes;
/** Begin inner box */
stresc(boxtitle, 256, floor_name, 1, 0);
svprintf(HKEY("BOXTITLE"), WCS_STRING, boxtitle);
- do_template("beginbox");
+ do_template("beginbox", NULL);
}
oldlevels = levels;
}
}
/** End the final inner box */
- do_template("endbox");
+ do_template("endbox", NULL);
wprintf("</td></tr></table>\n");
}
* \brief print a floor div???
* \param which_floordiv name of the floordiv???
*/
-void set_floordiv_expanded(char *which_floordiv) {
- begin_ajax_response();
- safestrncpy(WC->floordiv_expanded, which_floordiv, sizeof WC->floordiv_expanded);
- end_ajax_response();
+void set_floordiv_expanded(void) {
+ struct wcsession *WCC = WC;
+
+ if (WCC->floordiv_expanded == NULL)
+ WCC->floordiv_expanded = NewStrBuf();
+ else
+ FlushStrBuf(WC->floordiv_expanded);
+ StrBufAppendBuf(WC->floordiv_expanded, WC->UrlFragment1, 0);
}
/**
"%s</span><br>\n", floordiv_id, floordivtitle);
wprintf("<div id=\"%s\" style=\"display:%s\">",
floordiv_id,
- (!strcasecmp(floordiv_id, WC->floordiv_expanded) ? "block" : "none")
+ (!strcasecmp(floordiv_id, ChrPtr(WC->floordiv_expanded)) ? "block" : "none")
);
}
}
wprintf("num_drop_targets = %d;\n", num_drop_targets);
- if ((WC->floordiv_expanded[0] != '\0')&&
- (WC->floordiv_expanded[1] != '\0')){
- wprintf("which_div_expanded = '%s';\n", WC->floordiv_expanded);
+ if ((ChrPtr(WC->floordiv_expanded)[0] != '\0')&&
+ (ChrPtr(WC->floordiv_expanded)[1] != '\0')){
+ wprintf("which_div_expanded = '%s';\n", ChrPtr(WC->floordiv_expanded));
}
wprintf("\">\n");
* \param viewpref the view preferences???
*/
-void list_all_rooms_by_floor(char *viewpref) {
+void list_all_rooms_by_floor(const char *viewpref) {
char buf[SIZ];
int swap = 0;
struct folder *fold = NULL;
int *floor_mapping;
int IDMax;
int i, j;
+ int ShowEmptyFloors;
int ra_flags = 0;
int flags = 0;
int num_floors = 1; /** add an extra one for private folders */
- char buf2[SIZ];
char buf3[SIZ];
/** If our cached folder list is very old, burn it. */
/*
* Remove any floors that don't have rooms
*/
- get_preference("emptyfloors", buf2, sizeof buf2);
- if (buf2[0]==0 || (strcasecmp(buf2, "no") == 0))
+ get_pref_yesno("emptyfloors", &ShowEmptyFloors, 0);
+ if (ShowEmptyFloors)
{
for (i=0; i<num_floors; i++)
{
*/
void knrooms(void)
{
- char listviewpref[SIZ];
+ StrBuf *ListView = NULL;
output_headers(1, 1, 2, 0, 0, 0);
/** Determine whether the user is trying to change views */
- if (bstr("view") != NULL) {
- if (havebstr("view")) {
- set_preference("roomlistview", bstr("view"), 1);
+ if (havebstr("view")) {
+ ListView = NewStrBufPlain(bstr("view"), -1);
+ set_preference("roomlistview", ListView, 1);
+ }
+ /** Sanitize the input so its safe */
+ if(!get_preference("roomlistview", &ListView) ||
+ ((strcasecmp(ChrPtr(ListView), "folders") != 0) &&
+ (strcasecmp(ChrPtr(ListView), "table") != 0)))
+ {
+ if (ListView == NULL) {
+ ListView = NewStrBufPlain("rooms", sizeof("rooms") - 1);
+ set_preference("roomlistview", ListView, 0);
+ }
+ else {
+ StrBufPrintf(ListView, "rooms");
+ save_preferences();
}
- }
-
- get_preference("roomlistview", listviewpref, sizeof listviewpref);
-
- if ( (strcasecmp(listviewpref, "folders"))
- && (strcasecmp(listviewpref, "table")) ) {
- strcpy(listviewpref, "rooms");
}
/** title bar */
wprintf("<div id=\"banner\">\n");
wprintf("<div class=\"room_banner\">");
wprintf("<h1>");
- if (!strcasecmp(listviewpref, "rooms")) {
+ if (!strcasecmp(ChrPtr(ListView), "rooms")) {
wprintf(_("Room list"));
}
- if (!strcasecmp(listviewpref, "folders")) {
+ else if (!strcasecmp(ChrPtr(ListView), "folders")) {
wprintf(_("Folder list"));
}
- if (!strcasecmp(listviewpref, "table")) {
+ else if (!strcasecmp(ChrPtr(ListView), "table")) {
wprintf(_("Room list"));
}
wprintf("</h1></div>\n");
wprintf("<option %s value=\"knrooms&view=rooms\">"
"View as room list"
"</option>\n",
- ( !strcasecmp(listviewpref, "rooms") ? "SELECTED" : "" )
+ ( !strcasecmp(ChrPtr(ListView), "rooms") ? "SELECTED" : "" )
);
wprintf("<option %s value=\"knrooms&view=folders\">"
"View as folder list"
"</option>\n",
- ( !strcasecmp(listviewpref, "folders") ? "SELECTED" : "" )
+ ( !strcasecmp(ChrPtr(ListView), "folders") ? "SELECTED" : "" )
);
wprintf("</select>");
wprintf("<div id=\"content\" class=\"service\">\n");
/** Display the room list in the user's preferred format */
- list_all_rooms_by_floor(listviewpref);
+ list_all_rooms_by_floor(ChrPtr(ListView));
wDumpContent(1);
}
if (WC->axlevel >= 6) {
strcat(WC->ImportantMessage, "<br />\n");
- serv_printf("SPEX floor|%d|%d", ibstr("floorpolicy"), bstr("floorvalue"));
+ serv_printf("SPEX floor|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue"));
serv_getln(buf, sizeof buf);
strcat(WC->ImportantMessage, &buf[4]);
}
display_editroom();
}
+
+void _gotonext(void) { slrp_highest(); gotonext(); }
+void dotskip(void) {smart_goto(bstr("room"));}
+void _display_private(void) { display_private("", 0); }
+void dotgoto(void) {
+ if (WC->wc_view != VIEW_MAILBOX) { /* dotgoto acts like dotskip when we're in a mailbox view */
+ slrp_highest();
+ }
+ smart_goto(bstr("room"));
+}
+
+
+void
+InitModule_ROOMOPS
+(void)
+{
+ WebcitAddUrlHandler(HKEY("knrooms"), knrooms, 0);
+ WebcitAddUrlHandler(HKEY("gotonext"), _gotonext, 0);
+ WebcitAddUrlHandler(HKEY("skip"), gotonext, 0);
+ WebcitAddUrlHandler(HKEY("ungoto"), ungoto, 0);
+ WebcitAddUrlHandler(HKEY("dotgoto"), dotgoto, 0);
+ WebcitAddUrlHandler(HKEY("dotskip"), dotskip, 0);
+ WebcitAddUrlHandler(HKEY("display_private"), _display_private, 0);
+ WebcitAddUrlHandler(HKEY("goto_private"), goto_private, 0);
+ WebcitAddUrlHandler(HKEY("zapped_list"), zapped_list, 0);
+ WebcitAddUrlHandler(HKEY("display_zap"), display_zap, 0);
+ WebcitAddUrlHandler(HKEY("zap"), zap, 0);
+ WebcitAddUrlHandler(HKEY("display_entroom"), display_entroom, 0);
+ WebcitAddUrlHandler(HKEY("entroom"), entroom, 0);
+ WebcitAddUrlHandler(HKEY("display_whok"), display_whok, 0);
+ WebcitAddUrlHandler(HKEY("do_invt_kick"), do_invt_kick, 0);
+ WebcitAddUrlHandler(HKEY("display_editroom"), display_editroom, 0);
+ WebcitAddUrlHandler(HKEY("netedit"), netedit, 0);
+ WebcitAddUrlHandler(HKEY("editroom"), editroom, 0);
+ WebcitAddUrlHandler(HKEY("delete_room"), delete_room, 0);
+ WebcitAddUrlHandler(HKEY("set_room_policy"), set_room_policy, 0);
+ WebcitAddUrlHandler(HKEY("set_floordiv_expanded"), set_floordiv_expanded, NEED_URL|AJAX);
+ WebcitAddUrlHandler(HKEY("changeview"), change_view, 0);
+}
+
/*@}*/