* Finished "folder list" mode (still need to move it to a permanent location)
authorArt Cancro <ajc@citadel.org>
Fri, 3 May 2002 19:32:40 +0000 (19:32 +0000)
committerArt Cancro <ajc@citadel.org>
Fri, 3 May 2002 19:32:40 +0000 (19:32 +0000)
webcit/ChangeLog
webcit/roomops.c
webcit/tools.c

index 3748e9aea81d816c0cf60274deafcb14bf96c4e8..f5afe6602d6c88b553997eff18b0e3854d7a0a34 100644 (file)
@@ -1,4 +1,7 @@
 $Log$
+Revision 323.27  2002/05/03 19:32:39  ajc
+* Finished "folder list" mode (still need to move it to a permanent location)
+
 Revision 323.26  2002/05/03 03:55:17  ajc
 * more folder display stuff
 
@@ -794,4 +797,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 21e36af315b457e6168e96725fa370d55d2e8440..03dcf2c425029d0b3ed5a35f25cb4650db7fc3c2 100644 (file)
@@ -1656,6 +1656,7 @@ void folders(void) {
                char name[SIZ];
                int hasnewmsgs;
                int is_mailbox;
+               int selectable;
        };
 
        struct folder *fold = NULL;
@@ -1677,6 +1678,28 @@ void folders(void) {
                "</TD></TR></TABLE><BR>\n"
        );
 
+       /* Start with the mailboxes */
+       max_folders = 1;
+       alloc_folders = 1;
+       fold = malloc(sizeof(struct folder));
+       memset(fold, 0, sizeof(struct folder));
+       strcpy(fold[0].name, "My folders");
+
+       /* Then add floors */
+       serv_puts("LFLR");
+       serv_gets(buf);
+       if (buf[0]=='1') while(serv_gets(buf), strcmp(buf, "000")) {
+               if (max_folders >= alloc_folders) {
+                       alloc_folders = max_folders + 100;
+                       fold = realloc(fold,
+                               alloc_folders * sizeof(struct folder));
+               }
+               memset(&fold[max_folders], 0, sizeof(struct folder));
+               extract(fold[max_folders].name, buf, 1);
+               ++max_folders;
+       }
+
+       /* Now add rooms */
        for (p = 0; p < 2; ++p) {
                if (p == 0) serv_puts("LKRN");
                else if (p == 1) serv_puts("LKRO");
@@ -1687,6 +1710,7 @@ void folders(void) {
                                fold = realloc(fold,
                                        alloc_folders * sizeof(struct folder));
                        }
+                       memset(&fold[max_folders], 0, sizeof(struct folder));
                        extract(fold[max_folders].room, buf, 0);
                        if (p == 0) fold[max_folders].hasnewmsgs = 1;
                        flags = extract_int(buf, 1);
@@ -1698,6 +1722,7 @@ void folders(void) {
                                        fold[max_folders].room,
                                        floor,
                                        fold[max_folders].is_mailbox);
+                       fold[max_folders].selectable = 1;
                        ++max_folders;
                }
        }
@@ -1724,30 +1749,32 @@ void folders(void) {
                levels = num_tokens(fold[i].name, '|');
                if (levels > oldlevels) {
                        for (k=0; k<(levels-oldlevels); ++k) {
-                               wprintf("</UL>");
-                               --nests;
+                               wprintf("<UL>");
+                               ++nests;
                        }
                }
                if (levels < oldlevels) {
                        for (k=0; k<(oldlevels-levels); ++k) {
-                               wprintf("<UL>");
-                               ++nests;
+                               wprintf("</UL>");
+                               --nests;
                        }
                }
+               oldlevels = levels;
 
-               wprintf("<LI><A HREF=\"/dotgoto?room=");
-               urlescputs(fold[i].room);
-               wprintf("\">");
+               wprintf("<LI>");
+               if (fold[i].selectable) {
+                       wprintf("<A HREF=\"/dotgoto?room=");
+                       urlescputs(fold[i].room);
+                       wprintf("\">");
+               }
                if (fold[i].hasnewmsgs) wprintf("<B>");
-               extract(buf, fold[i].name, num_tokens(fold[i].name, '|')-1 );
-               escputs(fold[i].name);
+               extract(buf, fold[i].name, levels-1);
+               escputs(buf);
                if (fold[i].hasnewmsgs) wprintf("</B>");
-               wprintf("</A>\n");
-               oldlevels = levels;
+               if (fold[i].selectable) wprintf("</A>\n");
        }
        while (nests-- > 0) wprintf("</UL>\n");
 
        free(fold);
-
        wDumpContent(1);
 }
index 6b58ab9ffcaf438e48896751d0415319a98683c2..d9711573379a08e7abb1ee7d76d49427b0f61c93 100644 (file)
@@ -80,7 +80,7 @@ void extract_token(char *dest, char *source, int parmnum, char separator)
 
        if (strlen(source)==0) {
                return;
-               }
+       }
 
        for (i=0; i<strlen(source); ++i) {
                if (source[i]==separator) {