]> code.citadel.org Git - citadel.git/blobdiff - webcit/useredit.c
* Repaired all my b0rken COLOR tags
[citadel.git] / webcit / useredit.c
index 540999254e5f75ed6a9259abceb2b8843b57f557..a415b869bbd5b2998b7a8c1077f58281e3ad360a 100644 (file)
@@ -30,7 +30,7 @@
 
 
 
-void select_user_to_edit(char *message)
+void select_user_to_edit(char *message, char *preselect)
 {
        char buf[SIZ];
        char username[SIZ];
@@ -39,10 +39,10 @@ void select_user_to_edit(char *message)
 
        if (message != NULL) wprintf(message);
 
-       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=007700><TR><TD>");
-       wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"<B>"
+       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#007700\"><TR><TD>");
+       wprintf("<SPAN CLASS=\"titlebar\">"
                "Add/change/delete user accounts"
-               "</B></FONT></TD></TR></TABLE>\n");
+               "</SPAN></TD></TR></TABLE>\n");
 
        wprintf("<TABLE border=0 CELLSPACING=10><TR VALIGN=TOP>"
                "<TD>To edit an existing user account, select the user "
@@ -55,7 +55,11 @@ void select_user_to_edit(char *message)
         if (buf[0] == '1') {
                 while (serv_gets(buf), strcmp(buf, "000")) {
                         extract(username, buf, 0);
-                        wprintf("<OPTION>");
+                        wprintf("<OPTION");
+                       if (preselect != NULL)
+                          if (!strcasecmp(username, preselect))
+                             wprintf(" SELECTED");
+                       wprintf(">");
                         escputs(username);
                         wprintf("\n");
                 }
@@ -84,12 +88,10 @@ void select_user_to_edit(char *message)
 
 
 /* 
- * Display the form for editing a user's address book entry
+ * Locate the message number of a user's vCard in the current room
  */
-void display_edit_address_book_entry(char *username, long usernum) {
-       char roomname[SIZ];
+long locate_user_vcard(char *username, long usernum) {
        char buf[SIZ];
-       char error_message[SIZ];
        long vcard_msgnum = (-1L);
        char content_type[SIZ];
        char partnum[SIZ];
@@ -103,25 +105,6 @@ void display_edit_address_book_entry(char *username, long usernum) {
        struct stuff_t *stuff = NULL;
        struct stuff_t *ptr;
 
-
-       /* Locate the user's config room, creating it if necessary */
-       sprintf(roomname, "%010ld.My Citadel Config", usernum);
-       serv_printf("GOTO %s", roomname);
-       serv_gets(buf);
-       if (buf[0] != '2') {
-               serv_printf("CRE8 1|%s|5|", roomname);
-               serv_gets(buf);
-               serv_printf("GOTO %s", roomname);
-               serv_gets(buf);
-               if (buf[0] != '2') {
-                       sprintf(error_message,
-                               "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
-                               "%s<BR><BR>\n", &buf[4]);
-                       select_user_to_edit(error_message);
-                       return;
-               }
-       }
-
 TRYAGAIN:
        /* Search for the user's vCard */
        serv_puts("MSGS ALL");
@@ -133,7 +116,7 @@ TRYAGAIN:
                stuff = ptr;
        }
 
-       /* Iterate throught the message list looking for vCards */
+       /* Iterate through the message list looking for vCards */
        while (stuff != NULL) {
                serv_printf("MSG0 %ld|2", stuff->msgnum);
                serv_gets(buf);
@@ -155,8 +138,6 @@ TRYAGAIN:
                stuff = ptr;
        }
 
-       lprintf(9, "vcard_msgnum == %ld\n", vcard_msgnum);
-
        /* If there's no vcard, create one */
        if (vcard_msgnum < 0) if (already_tried_creating_one == 0) {
                already_tried_creating_one = 1;
@@ -172,11 +153,46 @@ TRYAGAIN:
                goto TRYAGAIN;
        }
 
+       return(vcard_msgnum);
+}
+
+
+/* 
+ * Display the form for editing a user's address book entry
+ */
+void display_edit_address_book_entry(char *username, long usernum) {
+       char roomname[SIZ];
+       char buf[SIZ];
+       char error_message[SIZ];
+       long vcard_msgnum = (-1L);
+
+       /* Locate the user's config room, creating it if necessary */
+       sprintf(roomname, "%010ld.%s", usernum, USERCONFIGROOM);
+       serv_printf("GOTO %s||1", roomname);
+       serv_gets(buf);
+       if (buf[0] != '2') {
+               serv_printf("CRE8 1|%s|5|||1|", roomname);
+               serv_gets(buf);
+               serv_printf("GOTO %s||1", roomname);
+               serv_gets(buf);
+               if (buf[0] != '2') {
+                       sprintf(error_message,
+                               "<IMG SRC=\"static/error.gif\" ALIGN=CENTER>"
+                               "%s<BR><BR>\n", &buf[4]);
+                       select_user_to_edit(error_message, username);
+                       return;
+               }
+       }
+
+       vcard_msgnum = locate_user_vcard(username, usernum);
+
        if (vcard_msgnum < 0) {
                sprintf(error_message,
-                       "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
-                       "Could not create/edit vCard<BR><BR>\n");
-               select_user_to_edit(error_message);
+                       "<IMG SRC=\"static/error.gif\" ALIGN=CENTER>"
+                       "Could not create/edit vCard"
+                       "<BR><BR>\n"
+               );
+               select_user_to_edit(error_message, username);
                return;
        }
 
@@ -217,9 +233,9 @@ void display_edituser(char *supplied_username) {
        serv_gets(buf);
        if (buf[0] != '2') {
                sprintf(error_message,
-                       "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
+                       "<IMG SRC=\"static/error.gif\" ALIGN=CENTER>"
                        "%s<BR><BR>\n", &buf[4]);
-               select_user_to_edit(error_message);
+               select_user_to_edit(error_message, username);
                return;
        }
 
@@ -239,11 +255,11 @@ void display_edituser(char *supplied_username) {
        }
 
        output_headers(3);      /* No room banner on this screen */
-       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=007700><TR><TD>");
-       wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"<B>"
+       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#007700\"><TR><TD>");
+       wprintf("<SPAN CLASS=\"titlebar\">"
                "Edit user account: ");
        escputs(username);
-       wprintf("</B></FONT></TD></TR></TABLE>\n");
+       wprintf("</SPAN></TD></TR></TABLE>\n");
 
        wprintf("<FORM METHOD=\"POST\" ACTION=\"/edituser\">\n"
                "<INPUT TYPE=\"hidden\" NAME=\"username\" VALUE=\"");
@@ -311,13 +327,7 @@ void display_edituser(char *supplied_username) {
                "<INPUT type=\"submit\" NAME=\"action\" VALUE=\"Cancel\">\n"
                "<BR><BR></FORM>\n");
 
-       wprintf("<A HREF=\"/dotgoto&room=%010ld.My%%20Citadel%%20Config\">",
-               usernum);
-       wprintf("Click here to access the configuration room for ");
-       escputs(username);
-       wprintf("</A><BR>\n"
-               "(Contact information, Internet e-mail addresses, etc.)<BR>"
-               "</CENTER>\n");
+       wprintf("</CENTER>\n");
 
        wDumpContent(1);
 
@@ -349,7 +359,7 @@ void edituser(void) {
                serv_gets(buf);
                if (buf[0] != '2') {
                        sprintf(message,
-                               "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
+                               "<IMG SRC=\"static/error.gif\" ALIGN=CENTER>"
                                "%s<BR><BR>\n", &buf[4]);
                }
                else {
@@ -357,7 +367,7 @@ void edituser(void) {
                }
        }
 
-       select_user_to_edit(message);
+       select_user_to_edit(message, bstr("username"));
 }
 
 
@@ -374,13 +384,14 @@ void create_user(void) {
        serv_gets(buf);
 
        if (buf[0] == '2') {
-               display_edituser(username);
+               sprintf(error_message, "<b>User has been created.</b>");
+               select_user_to_edit(error_message, username);
        }
        else {
                sprintf(error_message,
-                       "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
+                       "<IMG SRC=\"static/error.gif\" ALIGN=CENTER>"
                        "%s<BR><BR>\n", &buf[4]);
-               select_user_to_edit(error_message);
+               select_user_to_edit(error_message, NULL);
        }
 
 }