* Finished room/folder view selector. Pretty cool.
authorArt Cancro <ajc@citadel.org>
Wed, 22 May 2002 02:34:57 +0000 (02:34 +0000)
committerArt Cancro <ajc@citadel.org>
Wed, 22 May 2002 02:34:57 +0000 (02:34 +0000)
webcit/ChangeLog
webcit/preferences.c
webcit/roomops.c

index 081e22902038948b01d0428a21e989f51474e522..0a2eb9c714751f835d09430f6e9cd577eb2924a4 100644 (file)
@@ -1,4 +1,7 @@
 $Log$
+Revision 323.37  2002/05/22 02:34:56  ajc
+* Finished room/folder view selector.  Pretty cool.
+
 Revision 323.36  2002/05/22 01:53:23  ajc
 * Room list or folder list?  Give the user a choice.  (Has bugs.)
 
@@ -825,4 +828,3 @@ Sun Dec  6 19:50:55 EST 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
 
 1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
        * webserver.c: warning fix
-
index 71d61cc7723dae5625d5ad74e913481b9f82af33..c3f23f1c182e9231463ea7692f856be2bf31559e 100644 (file)
@@ -26,6 +26,7 @@
 #include <pthread.h>
 #include <signal.h>
 #include "webcit.h"
+#include "webserver.h"
 
 
 
@@ -33,6 +34,8 @@ void load_preferences(void) {
        char buf[SIZ];
        long msgnum = 0L;
 
+       lprintf(9, "entering load_preferences()\n");
+
        serv_printf("GOTO My Citadel Config");
        serv_gets(buf);
        if (buf[0] != '2') return;
@@ -77,12 +80,14 @@ void load_preferences(void) {
        /* Go back to the room we're supposed to be in */
        serv_printf("GOTO %s", WC->wc_roomname);
        serv_gets(buf);
+       lprintf(9, "exiting load_preferences()\n");
 }
 
 void save_preferences(void) {
        char buf[SIZ];
        long msgnum = 0L;
 
+       lprintf(9, "entering save_preferences()\n");
        serv_printf("GOTO My Citadel Config");
        serv_gets(buf);
        if (buf[0] != '2') { /* try to create the config room if not there */
@@ -119,6 +124,7 @@ void save_preferences(void) {
        /* Go back to the room we're supposed to be in */
        serv_printf("GOTO %s", WC->wc_roomname);
        serv_gets(buf);
+       lprintf(9, "exiting save_preferences()\n");
 }
 
 void get_preference(char *key, char *value) {
@@ -127,6 +133,7 @@ void get_preference(char *key, char *value) {
        char buf[SIZ];
        char thiskey[SIZ];
 
+       lprintf(9, "entering get_preference(%s)\n", key);
        strcpy(value, "");
 
        num_prefs = num_tokens(WC->preferences, '\n');
@@ -137,6 +144,7 @@ void get_preference(char *key, char *value) {
                        extract_token(value, buf, 1, '|');
                }
        }
+       lprintf(9, "exiting get_preference() = %s\n", value);
 }
 
 void set_preference(char *key, char *value) {
@@ -146,28 +154,30 @@ void set_preference(char *key, char *value) {
        char thiskey[SIZ];
        char *newprefs = NULL;
 
+       lprintf(9, "entering set_preference(%s, %s)\n", key, value);
        num_prefs = num_tokens(WC->preferences, '\n');
        for (i=0; i<num_prefs; ++i) {
                extract_token(buf, WC->preferences, i, '\n');
-               extract_token(thiskey, buf, 0, '|');
-               if (strcasecmp(thiskey, key)) {
-                       if (newprefs == NULL) newprefs = strdup("");
-                       else {
+               if (num_tokens(buf, '|') == 2) {
+                       extract_token(thiskey, buf, 0, '|');
+                       if (strcasecmp(thiskey, key)) {
+                               if (newprefs == NULL) newprefs = strdup("");
                                newprefs = realloc(newprefs,
-                                               strlen(newprefs) + SIZ );
+                                       strlen(newprefs) + SIZ );
+                               strcat(newprefs, buf);
+                               strcat(newprefs, "\n");
                        }
-                       strcat(newprefs, buf);
-                       strcat(newprefs, "\n");
                }
        }
 
 
        if (newprefs == NULL) newprefs = strdup("");
-       else {
-               newprefs = realloc(newprefs,
-                               strlen(newprefs) + SIZ );
-       }
+       newprefs = realloc(newprefs, strlen(newprefs) + SIZ);
        sprintf(&newprefs[strlen(newprefs)], "%s|%s\n", key, value);
 
+       free(WC->preferences);
+       WC->preferences = newprefs;
+
        save_preferences();
+       lprintf(9, "exiting set_preference()\n");
 }
index 65dc7d2aaa71429beb3d7f6f18fe1d161082e760..8896b94992243390eae9070da5b43f2ad768eafa 100644 (file)
@@ -1665,12 +1665,6 @@ void folders(void) {
        int floor;
        int nests = 0;
 
-       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=000077><TR><TD>"
-               "<FONT SIZE=+1 COLOR=\"FFFFFF\""
-               "<B>Folder list</B>\n"
-               "</TD></TR></TABLE><BR>\n"
-       );
-
        /* Start with the mailboxes */
        max_folders = 1;
        alloc_folders = 1;
@@ -1779,23 +1773,37 @@ void folders(void) {
 void knrooms() {
        char listviewpref[SIZ];
 
+       output_headers(3);
        load_floorlist();
-       output_headers(1);
 
        /* Determine whether the user is trying to change views */
-       strcpy(listviewpref, "rooms");
        if (bstr("view") != NULL) {
-               set_preference("roomlistview", bstr("view"));
+               if (strlen(bstr("view")) > 0) {
+                       set_preference("roomlistview", bstr("view"));
+               }
        }
 
        get_preference("roomlistview", listviewpref);
 
-       if (!strcasecmp(listviewpref, "folders")) {
+       if (strcasecmp(listviewpref, "folders")) {
                strcpy(listviewpref, "rooms");
        }
 
+       /* title bar */
+       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=000077><TR><TD>"
+               "<FONT SIZE=+1 COLOR=\"FFFFFF\"<B>"
+       );
+       if (!strcasecmp(listviewpref, "rooms")) {
+               wprintf("Room list");
+       }
+       if (!strcasecmp(listviewpref, "folders")) {
+               wprintf("Folder list");
+       }
+       wprintf("</B></TD>\n");
+
+
        /* offer the ability to switch views */
-       wprintf("<FORM NAME=\"roomlistomatic\">\n"
+       wprintf("<TD><FORM NAME=\"roomlistomatic\">\n"
                "<SELECT NAME=\"newview\" SIZE=\"1\" "
                "OnChange=\"location.href=roomlistomatic.newview.options"
                "[selectedIndex].value\">\n");
@@ -1812,7 +1820,8 @@ void knrooms() {
                ( !strcasecmp(listviewpref, "folders") ? "SELECTED" : "" )
        );
 
-       wprintf("</SELECT></FORM>\n");
+       wprintf("</SELECT></FORM></TD>\n"
+               "</TR></TABLE><BR>\n");
 
        /* Display the room list in the user's preferred format */
        if (!strcasecmp(listviewpref, "folders")) {