]> code.citadel.org Git - citadel.git/blobdiff - webcit/vcard_edit.c
Saving vCards now requires the API caller to specify the room
[citadel.git] / webcit / vcard_edit.c
index 6781745199d1cf549cb831bc4b111402822fba78..52cea9bd0d12992a3f221d47eee5c5a51d82b5e0 100644 (file)
@@ -18,7 +18,7 @@
  * \param partnum what???
  * \param return_to where to go back in the browser after edit ????
  */
-void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
+void do_edit_vcard(long msgnum, char *partnum, char *return_to, char *force_room) {
        char buf[SIZ];
        char *serialized_vcard = NULL;
        size_t total_len = 0;
@@ -89,25 +89,18 @@ void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
                        }
                }
        
-               sprintf(buf, "OPNA %ld|%s", msgnum, partnum);
-               lprintf(9, "%s\n", buf);
+               sprintf(buf, "DLAT %ld|%s", msgnum, partnum);
                serv_puts(buf);
                serv_getln(buf, sizeof buf);
-               lprintf(9, "%s\n", buf);
-               if (buf[0] != '2') {
+               if (buf[0] != '6') {
                        convenience_page("770000", "Error", &buf[4]);
                        return;
                }
        
                total_len = atoi(&buf[4]);
                serialized_vcard = malloc(total_len + 2);
-       
-               read_server_binary(serialized_vcard, total_len);
 
-               lprintf(9, "Serialized vcard:\n---\n%s\n---\n", serialized_vcard);
-       
-               serv_puts("CLOS");
-               serv_getln(buf, sizeof buf);
+               serv_read(serialized_vcard, total_len);
                serialized_vcard[total_len] = 0;
        
                v = vcard_load(serialized_vcard);
@@ -181,20 +174,22 @@ void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
        }
 
        /** Display the form */
-       output_headers(1, 1, 2, 0, 0, 0);
-       wprintf("<div id=\"banner\">\n"
-               "<table width=100%% border=0 bgcolor=\"#444455\"><tr><td>"
-               "<span class=\"titlebar\">"
-               "<img src=\"static/savecontact_48x.gif\">");
-       wprintf(_("Edit contact information"));
-       wprintf("</span>"
-               "</td></tr></table>\n"
-               "</div>\n<div id=\"content\">\n"
-       );
+       output_headers(1, 1, 1, 0, 0, 0);
+
+       svprintf("BOXTITLE", WCS_STRING, _("Edit contact information"));
+       do_template("beginbox");
 
        wprintf("<form method=\"POST\" action=\"submit_vcard\">\n");
+       wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+
+       if (force_room != NULL) {
+               wprintf("<input type=\"hidden\" name=\"force_room\" value=\"");
+               escputs(force_room);
+               wprintf("\">\n");
+       }
+
        wprintf("<div class=\"fix_scrollbar_bug\">"
-               "<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
+               "<table class=\"vcard_edit_background\"><tr><td>\n");
 
        wprintf("<table border=0><tr>"
                "<td>%s</td>"
@@ -220,7 +215,7 @@ void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
                "value=\"%s\" maxlength=\"10\" size=\"10\"></td></tr></table>\n",
                suffix);
 
-       wprintf("<table border=0 width=100%% bgcolor=\"#dddddd\">");
+       wprintf("<table  class=\"vcard_edit_background_alt\">");
        wprintf("<tr><td>");
 
        wprintf(_("Display name:"));
@@ -273,7 +268,7 @@ void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
        wprintf(_("State:"));
        wprintf("</td><td>"
                "<input type=\"text\" name=\"state\" "
-               "value=\"%s\" maxlength=\"2\"></td></tr>\n",
+               "value=\"%s\" maxlength=\"29\"></td></tr>\n",
                state);
        wprintf("<tr><td>");
        wprintf(_("ZIP code:"));
@@ -304,7 +299,7 @@ void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
                "value=\"%s\" maxlength=\"29\"></td></tr></table>\n",
                worktel);
 
-       wprintf("<table border=0 width=100%% bgcolor=\"#dddddd\">");
+       wprintf("<table class=\"vcard_edit_background_alt\">");
        wprintf("<tr><td>");
 
        wprintf("<table border=0><TR>"
@@ -332,16 +327,17 @@ void do_edit_vcard(long msgnum, char *partnum, char *return_to) {
        urlescputs(return_to);
        wprintf("\">\n");
 
-       wprintf("<center>\n"
+       wprintf("<div class=\"buttons\">\n"
                "<input type=\"submit\" name=\"ok_button\" value=\"%s\">"
                "&nbsp;"
                "<input type=\"submit\" name=\"cancel_button\" value=\"%s\">"
-               "</center></form>\n",
+               "</div></form>\n",
                _("Save changes"),
                _("Cancel")
        );
        
-       wprintf("</td></tr></table></div>\n");
+       wprintf("</td></tr></table>\n");
+       do_template("endbox");
        wDumpContent(1);
 }
 
@@ -355,7 +351,7 @@ void edit_vcard(void) {
 
        msgnum = atol(bstr("msgnum"));
        partnum = bstr("partnum");
-       do_edit_vcard(msgnum, partnum, "");
+       do_edit_vcard(msgnum, partnum, "", NULL);
 }
 
 
@@ -369,11 +365,15 @@ void submit_vcard(void) {
        char buf[SIZ];
        int i;
 
-       if (strlen(bstr("ok_button")) == 0) { 
+       if (IsEmptyStr(bstr("ok_button"))) { 
                readloop("readnew");
                return;
        }
 
+       if (!IsEmptyStr(bstr("force_room"))) {
+               gotoroom(bstr("force_room"));
+       }
+
        sprintf(buf, "ENT0 1|||4||");
        serv_puts(buf);
        serv_getln(buf, sizeof buf);
@@ -425,7 +425,7 @@ void submit_vcard(void) {
 
        for (i=0; i<num_tokens(bstr("other_inetemail"), '\n'); ++i) {
                extract_token(buf, bstr("other_inetemail"), i, '\n', sizeof buf);
-               if (strlen(buf) > 0) {
+               if (!IsEmptyStr(buf)) {
                        vcard_add_prop(v, "email;internet", buf);
                }
        }