* Corrected bad html generated when there's only one message in a summary view.
* Retain both login name and display name (fullname) in session structure.
This fixes chat window authentication when connecting to a Citadel server
using host based authentication.
$Id$
+Wed Jan 18 16:39:12 EST 2006 ajc
+* fix_scrollbar_bug is now a class instead of an id. Fixes validator warnings.
+* Corrected bad html generated when there's only one message in a summary view.
+* Retain both login name and display name (fullname) in session structure.
+ This fixes chat window authentication when connecting to a Citadel server
+ using host based authentication.
+
Mon Jan 16 11:52:53 EST 2006 ajc
* Experimental unix domain socket listener
char buf[SIZ];
WC->logged_in = 1;
- extract_token(WC->wc_username, &serv_response[4], 0, '|', sizeof WC->wc_username);
+ extract_token(WC->wc_fullname, &serv_response[4], 0, '|', sizeof WC->wc_fullname);
+ safestrncpy(WC->wc_username, user, sizeof WC->wc_username);
safestrncpy(WC->wc_password, pass, sizeof WC->wc_password);
WC->axlevel = extract_int(&serv_response[4], 1);
if (WC->axlevel >= 6) {
safestrncpy(WC->wc_username, "", sizeof WC->wc_username);
safestrncpy(WC->wc_password, "", sizeof WC->wc_password);
safestrncpy(WC->wc_roomname, "", sizeof WC->wc_roomname);
+ safestrncpy(WC->wc_fullname, "", sizeof WC->wc_fullname);
/* Calling output_headers() this way causes the cookies to be un-set */
output_headers(1, 1, 0, 1, 0, 0);
return;
}
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<center>");
return;
}
- vcard_msgnum = locate_user_vcard(WC->wc_username, -1);
+ vcard_msgnum = locate_user_vcard(WC->wc_fullname, -1);
if (vcard_msgnum < 0L) {
if (during_login) do_welcome();
else display_main_menu();
safestrncpy(WC->ImportantMessage, "", sizeof WC->ImportantMessage);
}
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<CENTER><br />");
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>");
wprintf("<FORM METHOD=\"POST\" action=\"save_task\">\n");
}
/* Outer table (to get the background color) */
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<TABLE width=100%% border=0 cellpadding=0 cellspacing=0 "
"bgcolor=#204B78><TR><TD>\n");
/* Outer table (to get the background color) */
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<TABLE width=100%% border=0 cellpadding=0 cellspacing=0 "
"bgcolor=#204B78><TR><TD>\n");
char buf[SIZ];
icalproperty *p;
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 cellspacing=0 width=100%% bgcolor=\"#FFFFFF\">\n<tr>\n"
"<TH>");
wprintf(_("Name of task"));
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
/************************************************************
return;
}
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<TABLE BORDER=1 WIDTH=100%% bgcolor=\"#ffffff\">\n"
"<TR><TH>");
wprintf(_("Floor number"));
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<CENTER>\n");
wprintf("<D:propstat>");
wprintf("<D:status>HTTP/1.1 200 OK</D:status>");
wprintf("<D:prop>");
- wprintf("<D:displayname>");
+ wprintf("<D:fullname>");
escputs(roomname);
- wprintf("</D:displayname>");
+ wprintf("</D:fullname>");
wprintf("<D:resourcetype><D:collection/>");
switch(view) {
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>");
wprintf("<FORM METHOD=\"POST\" action=\"commit_iconbar\">\n");
wprintf("</TD></TR></TABLE>\n");
wprintf("</div>\n<div id=\"content\">\n");
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%%><tr><td valign=top>\n");
for (which=0; which<ic_max; ++which) {
if (which == (ic_max / 2)) {
int self;
char sroom[SIZ];
+ strcpy(WC->wc_fullname, "");
strcpy(WC->wc_username, "");
strcpy(WC->wc_password, "");
strcpy(WC->wc_roomname, "");
{
output_headers(1, 1, 1, 0, 0, 0);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<TABLE WIDTH=100%%>"
"<TR><TD COLSPAN=2>\n");
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%%><tr valign=top><td>");
svprintf("BOXTITLE", WCS_STRING, _("Global Configuration"));
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<CENTER>");
char firsttoken[SIZ];
int pass;
- char displayname[SIZ];
+ char fullname[SIZ];
char title[SIZ];
char org[SIZ];
char phone[SIZ];
char mailto[SIZ];
- strcpy(displayname, "");
+ strcpy(fullname, "");
strcpy(phone, "");
strcpy(mailto, "");
strcpy(title, "");
escputs(name);
}
else if (name = vcard_get_prop(v, "n", 1, 0, 0), name != NULL) {
- strcpy(displayname, name);
- vcard_n_prettyize(displayname);
- escputs(displayname);
+ strcpy(fullname, name);
+ vcard_n_prettyize(fullname);
+ escputs(fullname);
}
else {
wprintf(" ");
/* N is name, but only if there's no FN already there */
if (!strcasecmp(firsttoken, "n")) {
- if (strlen(displayname) == 0) {
- strcpy(displayname, thisvalue);
- vcard_n_prettyize(displayname);
+ if (strlen(fullname) == 0) {
+ strcpy(fullname, thisvalue);
+ vcard_n_prettyize(fullname);
}
}
/* FN (full name) is a true 'display name' field */
else if (!strcasecmp(firsttoken, "fn")) {
- strcpy(displayname, thisvalue);
+ strcpy(fullname, thisvalue);
}
/* title */
"<a href=\"display_enter"
"?force_room=_MAIL_?recp=");
- urlesc(&mailto[strlen(mailto)], displayname);
+ urlesc(&mailto[strlen(mailto)], fullname);
urlesc(&mailto[strlen(mailto)], " <");
urlesc(&mailto[strlen(mailto)], thisvalue);
urlesc(&mailto[strlen(mailto)], ">");
"<TD COLSPAN=2 BGCOLOR=\"#FFFFFF\">"
"<IMG ALIGN=CENTER src=\"static/viewcontacts_48x.gif\">"
"<FONT SIZE=+1><B>");
- escputs(displayname);
+ escputs(fullname);
wprintf("</B></FONT>");
if (strlen(title) > 0) {
wprintf("<div align=right>");
/* begin everythingamundo table */
if (!printable_view) {
- wprintf("<div id=\"fix_scrollbar_bug\">\n");
+ wprintf("<div class=\"fix_scrollbar_bug\">\n");
wprintf("<table width=100%% border=1 cellspacing=0 "
"cellpadding=0><TR><TD>\n");
}
{
char buf[1024];
time_t datestamp;
- char displayname[128];
+ char fullname[128];
char nodename[128];
char inetaddr[128];
char subject[256];
if (nummsgs < maxload) {
WC->msgarr[nummsgs] = extract_long(buf, 0);
datestamp = extract_long(buf, 1);
- extract_token(displayname, buf, 2, '|', sizeof displayname);
+ extract_token(fullname, buf, 2, '|', sizeof fullname);
extract_token(nodename, buf, 3, '|', sizeof nodename);
extract_token(inetaddr, buf, 4, '|', sizeof inetaddr);
extract_token(subject, buf, 5, '|', sizeof subject);
memset(&WC->summ[nummsgs-1], 0, sizeof(struct message_summary));
WC->summ[nummsgs-1].msgnum = WC->msgarr[nummsgs-1];
safestrncpy(WC->summ[nummsgs-1].subj, _("(no subject)"), sizeof WC->summ[nummsgs-1].subj);
- if (strlen(displayname) > 0) {
- safestrncpy(WC->summ[nummsgs-1].from, displayname, sizeof WC->summ[nummsgs-1].from);
+ if (strlen(fullname) > 0) {
+ safestrncpy(WC->summ[nummsgs-1].from, fullname, sizeof WC->summ[nummsgs-1].from);
}
if (strlen(subject) > 0) {
safestrncpy(WC->summ[nummsgs-1].subj, subject,
/* note that Date and Delete are now in the same column */
wprintf("<div id=\"message_list_hdr\">"
- "<div id=\"fix_scrollbar_bug\">"
+ "<div class=\"fix_scrollbar_bug\">"
"<table cellspacing=0 style=\"width:100%%\">"
"<tr>"
);
wprintf("<div id=\"message_list\">"
- "<div id=\"fix_scrollbar_bug\">\n"
+ "<div class=\"fix_scrollbar_bug\">\n"
- "<span class=\"mailbox_summary\">"
- "<table id=\"summary_headers\" rules=rows "
+ "<table class=\"mailbox_summary\" id=\"summary_headers\" rules=rows "
"cellspacing=0 style=\"width:100%%;-moz-user-select:none;\">"
);
}
/* Set the "is_bbview" variable if it appears that we are looking at
* a classic bulletin board view.
*/
- if (num_displayed > 1) {
- if ((!is_tasks) && (!is_calendar) && (!is_addressbook)
+ if ((!is_tasks) && (!is_calendar) && (!is_addressbook)
&& (!is_notes) && (!is_singlecard) && (!is_summary)) {
is_bbview = 1;
}
}
if (is_summary) {
- wprintf("</table></span>"
+ wprintf("</table>"
"</div>\n"); /* end of 'fix_scrollbar_bug' div */
wprintf("</div>"); /* end of 'message_list' div */
/* Here's the grab-it-to-resize-the-message-list widget */
wprintf("<div id=\"resize_msglist\" "
"onMouseDown=\"CtdlResizeMsgListMouseDown(event)\">"
- "<div id=\"fix_scrollbar_bug\">"
+ "<div class=\"fix_scrollbar_bug\">"
"<table width=100%% border=3 cellspacing=0 "
- "bgcolor=\"#ccc\" "
+ "bgcolor=\"#cccccc\" "
"cellpadding=0><TR><TD> </td></tr></table>"
"</div></div>\n"
);
"[selectedIndex].value\">\n"
);
- wprintf("<option %s value=\"%s&sortby=forward\">oldest to newest</option>\n",
+ wprintf("<option %s value=\"%s?sortby=forward\">oldest to newest</option>\n",
(bbs_reverse ? "" : "selected"),
oper
);
- wprintf("<option %s value=\"%s&sortby=reverse\">newest to oldest</option>\n",
+ wprintf("<option %s value=\"%s?sortby=reverse\">newest to oldest</option>\n",
(bbs_reverse ? "selected" : ""),
oper
);
wprintf("</select></form>\n");
/* end bbview scroller */
- }
}
DONE:
do_addrbook_view(addrbook, num_ab); /* Render the address book */
}
- /* Put the data transfer hidden iframe in a hidden div, to make it *really* hidden */
- wprintf("</div>"
- "<div display=\"hidden\">\n"
- "<iframe name=\"msgloader1\" id=\"msgloader1\" width=\"1\"></iframe>\n"
- );
-
/* Note: wDumpContent() will output one additional </div> tag. */
wDumpContent(1);
if (addrbook != NULL) free(addrbook);
embed_room_banner(NULL, navbar_none);
wprintf("</div>\n");
wprintf("<div id=\"content\">\n"
- "<div id=\"fix_scrollbar_bug\">"
+ "<div class=\"fix_scrollbar_bug\">"
"<table width=100%% border=0 bgcolor=\"#ffffff\"><tr><td>");
/* First test to see whether this is a room that requires recipients to be entered */
now = time(NULL);
fmt_date(buf, now, 0);
strcat(&buf[strlen(buf)], _(" <I>from</I> "));
- stresc(&buf[strlen(buf)], WC->wc_username, 1, 1);
+ stresc(&buf[strlen(buf)], WC->wc_fullname, 1, 1);
/* Don't need this anymore, it's in the input box below
if (strlen(bstr("recp")) > 0) {
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf(_("Send an instant message to: "));
if (strcasecmp(cl_user, WC->last_chat_user)) {
wprintf("<B>");
- if (!strcasecmp(cl_user, WC->wc_username)) {
+ if (!strcasecmp(cl_user, WC->wc_fullname)) {
wprintf("<FONT COLOR="#FF0000">");
}
else {
wprintf("</div>\n"
"<div id=\"content\">\n");
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
/* begin form */
if (buf[0] == '1') {
fmout("CENTER");
}
+ else {
+ wprintf(" ");
+ }
}
/* print the tabbed dialog */
wprintf("<br />"
- "<div id=\"fix_scrollbar_bug\">"
+ "<div class=\"fix_scrollbar_bug\">"
"<TABLE border=0 cellspacing=0 cellpadding=0 width=100%%>"
"<TR ALIGN=CENTER>"
"<TD> </TD>\n");
/* end tabbed dialog */
/* begin content of whatever tab is open now */
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<TABLE border=0 width=100%% bgcolor=\"#FFFFFF\">\n"
"<TR><TD>\n");
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<form name=\"create_room_form\" method=\"POST\" action=\"entroom\">\n");
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<CENTER>\n");
wprintf("</div>\n"
"<div id=\"content\">\n");
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<form method=\"post\" action=\"setup_wizard\">\n"
);
return;
}
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>");
char *tabnames[] = {
}
-#fix_scrollbar_bug {
+.fix_scrollbar_bug {
margin-right:1px; /* Gecko and other non-broken browsers */
width: expression('97%'); /* Only IE6 understands 'expression' - fixes weird scrollbarbug */
}
}
else if (!strcasecmp(keyname, "CURRENT_USER")) {
- escputs(WC->wc_username);
+ escputs(WC->wc_fullname);
}
else if (!strcasecmp(keyname, "CURRENT_ROOM")) {
* not people I consider worthwhile, I still want them to use WebCit.
*/
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%%><tr valign=top>");
/*
"<SPAN CLASS=\"titlebar\">"
);
- snprintf(title, sizeof title, _("Summary page for %s"), WC->wc_username);
+ snprintf(title, sizeof title, _("Summary page for %s"), WC->wc_fullname);
escputs(title);
wprintf("</SPAN></TD><TD>\n");
wprintf("</TD><TD ALIGN=RIGHT><SPAN CLASS=\"titlebar\">");
wprintf("</SPAN></TD></TR></TABLE>\n");
wprintf("</div>\n<div id=\"content\">\n");
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<FORM METHOD=\"POST\" action=\"edituser\">\n"
"<INPUT TYPE=\"hidden\" NAME=\"username\" VALUE=\"");
goto DONE;
}
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf(_("<TR><TH>User Name</TH><TH>Number</TH><TH>Access Level</TH>"
"<TH>Last Login</TH><TH>Total Logins</TH><TH>Total Posts</TH></TR>"));
"</div>\n<div id=\"content\">\n"
);
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
serv_printf("OIMG _userpic_|%s", who);
char primary_inetemail[256];
char other_inetemail[SIZ];
char extrafields[SIZ];
- char displayname[256];
+ char fullname[256];
char title[256];
char org[256];
}
else if (!strcasecmp(key, "fn")) {
- safestrncpy(displayname, value, sizeof displayname);
+ safestrncpy(fullname, value, sizeof fullname);
}
else if (!strcasecmp(key, "title")) {
);
wprintf("<FORM METHOD=\"POST\" action=\"submit_vcard\">\n");
- wprintf("<div id=\"fix_scrollbar_bug\">"
+ wprintf("<div class=\"fix_scrollbar_bug\">"
"<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
wprintf("<TABLE border=0><TR>"
wprintf(_("Display name:"));
wprintf("<br>"
- "<INPUT TYPE=\"text\" NAME=\"displayname\" "
+ "<INPUT TYPE=\"text\" NAME=\"fullname\" "
"VALUE=\"%s\" MAXLENGTH=\"40\"><br><br>\n",
- displayname
+ fullname
);
wprintf(_("Title:"));
bstr("prefix"),
bstr("suffix") );
serv_printf("title:%s", bstr("title") );
- serv_printf("fn:%s", bstr("displayname") );
+ serv_printf("fn:%s", bstr("fullname") );
serv_printf("org:%s", bstr("org") );
serv_printf("adr:%s;%s;%s;%s;%s;%s;%s",
bstr("pobox"),
} else if (!strcasecmp(action, "editinfo")) {
save_edit(_("Room info"), "EINF 1", 1);
} else if (!strcasecmp(action, "display_editbio")) {
- sprintf(buf, "RBIO %s", WC->wc_username);
+ sprintf(buf, "RBIO %s", WC->wc_fullname);
display_edit(_("Your bio"), "NOOP", buf, "editbio", 3);
} else if (!strcasecmp(action, "editbio")) {
save_edit(_("Your bio"), "EBIO", 0);
struct wcsession *next; /* Linked list */
int wc_session; /* WebCit session ID */
char wc_username[128];
+ char wc_fullname[128];
char wc_password[128];
char wc_roomname[256];
int connected;