-
-/**
- * \brief One big expanded tree list view --- like a folder list
- * \param fold the folder to view
- * \param max_folders how many folders???
- * \param num_floors hom many floors???
- */
-void do_folder_view(struct folder *fold, int max_folders, int num_floors) {
- char buf[SIZ];
- int levels;
- int i;
- int has_subfolders = 0;
- int *parents;
-
- parents = malloc(max_folders * sizeof(int));
-
- /** BEGIN TREE MENU */
- wprintf("<div id=\"roomlist_div\">Loading folder list...</div>\n");
-
- /** include NanoTree */
- wprintf("<script type=\"text/javascript\" src=\"static/nanotree.js\"></script>\n");
-
- /** initialize NanoTree */
- wprintf("<script type=\"text/javascript\"> \n"
- " showRootNode = false; \n"
- " sortNodes = false; \n"
- " dragable = false; \n"
- " \n"
- " function standardClick(treeNode) { \n"
- " } \n"
- " \n"
- " var closedGif = 'static/folder_closed.gif'; \n"
- " var openGif = 'static/folder_open.gif'; \n"
- " \n"
- " rootNode = new TreeNode(1, 'root node - hide'); \n"
- );
-
- levels = 0;
- for (i=0; i<max_folders; ++i) {
-
- has_subfolders = 0;
- if ((i+1) < max_folders) {
- int len;
- len = strlen(fold[i].name);
- if ( (!strncasecmp(fold[i].name, fold[i+1].name, len))
- && (fold[i+1].name[len] == '|') ) {
- has_subfolders = 1;
- }
- }
-
- levels = num_tokens(fold[i].name, '|');
- parents[levels] = i;
-
- wprintf("var node%d = new TreeNode(%d, '", i, i);
-
- if (fold[i].selectable) {
- wprintf("<a href=\"dotgoto?room=");
- urlescputs(fold[i].room);
- wprintf("\">");
- }
-
- if (levels == 1) {
- wprintf("<span class=\"roomlist_floor\">");
- }
- else if (fold[i].hasnewmsgs) {
- wprintf("<span class=\"roomlist_new\">");
- }
- else {
- wprintf("<span class=\"roomlist_old\">");
- }
- extract_token(buf, fold[i].name, levels-1, '|', sizeof buf);
- escputs(buf);
- wprintf("</span>");
-
- wprintf("</a>', ");
- if (has_subfolders) {
- wprintf("new Array(closedGif, openGif)");
- }
- else if (fold[i].view == VIEW_ADDRESSBOOK) {
- wprintf("'static/viewcontacts_16x.gif'");
- }
- else if (fold[i].view == VIEW_CALENDAR) {
- wprintf("'static/calarea_16x.gif'");
- }
- else if (fold[i].view == VIEW_CALBRIEF) {
- wprintf("'static/calarea_16x.gif'");
- }
- else if (fold[i].view == VIEW_TASKS) {
- wprintf("'static/taskmanag_16x.gif'");
- }
- else if (fold[i].view == VIEW_NOTES) {
- wprintf("'static/storenotes_16x.gif'");
- }
- else if (fold[i].view == VIEW_MAILBOX) {
- wprintf("'static/privatemess_16x.gif'");
- }
- else {
- wprintf("'static/chatrooms_16x.gif'");
- }
- wprintf(", '");
- urlescputs(fold[i].name);
- wprintf("');\n");
-
- if (levels < 2) {
- wprintf("rootNode.addChild(node%d);\n", i);
- }
- else {
- wprintf("node%d.addChild(node%d);\n", parents[levels-1], i);
- }
- }
-
- wprintf("container = document.getElementById('roomlist_div'); \n"
- "showTree(''); \n"
- "</script>\n"
- );
-
- free(parents);
- /** END TREE MENU */
-}
-
-/**
- * \brief Boxes and rooms and lists ... oh my!
- * \param fold the folder to view
- * \param max_folders how many folders???
- * \param num_floors hom many floors???
- */
-void do_rooms_view(struct folder *fold, int max_folders, int num_floors) {
- char buf[256];
- char floor_name[256];
- char old_floor_name[256];
- int levels, oldlevels;
- int i, t;
- int num_boxes = 0;
- static int columns = 3;
- int boxes_per_column = 0;
- int current_column = 0;
- int nf;
-
- strcpy(floor_name, "");
- strcpy(old_floor_name, "");
-
- nf = num_floors;
- while (nf % columns != 0) ++nf;
- boxes_per_column = (nf / columns);
- if (boxes_per_column < 1) boxes_per_column = 1;
-
- /** Outer table (for columnization) */
- wprintf("<table BORDER=0 WIDTH=96%% CELLPADDING=5>"
- "<tr><td valign=top>");
-
- levels = 0;
- oldlevels = 0;
- for (i=0; i<max_folders; ++i) {
-
- levels = num_tokens(fold[i].name, '|');
- extract_token(floor_name, fold[i].name, 0,
- '|', sizeof floor_name);
-
- if ( (strcasecmp(floor_name, old_floor_name))
- && (!IsEmptyStr(old_floor_name)) ) {
- /* End inner box */
- do_template("endbox", NULL);
- wprintf("<br>");
-
- ++num_boxes;
- if ((num_boxes % boxes_per_column) == 0) {
- ++current_column;
- if (current_column < columns) {
- wprintf("</td><td valign=top>\n");
- }
- }
- }
- strcpy(old_floor_name, floor_name);
-
- if (levels == 1) {
- StrBuf *Buf;
-
- Buf = NewStrBufPlain(floor_name, -1);
- DoTemplate(HKEY("beginbox"), NULL, Buf, CTX_STRBUF);
-
- FreeStrBuf(&Buf);
- }
-
- oldlevels = levels;
-
- if (levels > 1) {
- wprintf(" ");
- if (levels>2) for (t=0; t<(levels-2); ++t) wprintf(" ");
- if (fold[i].selectable) {
- wprintf("<a href=\"dotgoto?room=");
- urlescputs(fold[i].room);
- wprintf("\">");
- }
- else {
- wprintf("<i>");
- }
- if (fold[i].hasnewmsgs) {
- wprintf("<span class=\"roomlist_new\">");
- }
- else {
- wprintf("<span class=\"roomlist_old\">");
- }
- extract_token(buf, fold[i].name, levels-1, '|', sizeof buf);
- escputs(buf);
- wprintf("</span>");
- if (fold[i].selectable) {
- wprintf("</A>");
- }
- else {
- wprintf("</i>");
- }
- if (!strcasecmp(fold[i].name, "My Folders|Mail")) {
- wprintf(" (INBOX)");
- }
- wprintf("<br />\n");
- }
- }
- /** End the final inner box */
- do_template("endbox", NULL);
-
- wprintf("</td></tr></table>\n");
-}
-
-/**
- * \brief print a floor div???
- * \param which_floordiv name of the floordiv???
- */
-void set_floordiv_expanded(void) {
- struct wcsession *WCC = WC;
- StrBuf *FloorDiv;
-
- FloorDiv = NewStrBuf();
- StrBufAppendBuf(FloorDiv, WCC->UrlFragment1, 0);
- set_preference("floordiv_expanded", FloorDiv, 1);
- WCC->floordiv_expanded = FloorDiv;
-}
-
-/**
- * \brief view the iconbar
- * \param fold the folder to view
- * \param max_folders how many folders???
- * \param num_floors hom many floors???
- */
-void do_iconbar_view(struct folder *fold, int max_folders, int num_floors) {
- char buf[256];
- char floor_name[256];
- char old_floor_name[256];
- char floordivtitle[256];
- char floordiv_id[32];
- int levels, oldlevels;
- int i, t;
- int num_drop_targets = 0;
- char *icon = NULL;
-
- strcpy(floor_name, "");
- strcpy(old_floor_name, "");
-
- levels = 0;
- oldlevels = 0;
- for (i=0; i<max_folders; ++i) {
-
- levels = num_tokens(fold[i].name, '|');
- extract_token(floor_name, fold[i].name, 0,
- '|', sizeof floor_name);
-
- if ( (strcasecmp(floor_name, old_floor_name))
- && (!IsEmptyStr(old_floor_name)) ) {
- /** End inner box */
- wprintf("<br>\n");
- wprintf("</div>\n"); /** floordiv */
- }
- strcpy(old_floor_name, floor_name);
-
- if (levels == 1) {
- /** Begin floor */
- stresc(floordivtitle, 256, floor_name, 0, 0);
- sprintf(floordiv_id, "floordiv%d", i);
- wprintf("<span class=\"ib_roomlist_floor\" "
- "onClick=\"expand_floor('%s')\">"
- "%s</span><br>\n", floordiv_id, floordivtitle);
- wprintf("<div id=\"%s\" style=\"display:%s\">",
- floordiv_id,
- (!strcasecmp(floordiv_id, ChrPtr(WC->floordiv_expanded)) ? "block" : "none")
- );
- }
-
- oldlevels = levels;
-
- if (levels > 1) {
- wprintf("<div id=\"roomdiv%d\">", i);
- wprintf(" ");
- if (levels>2) for (t=0; t<(levels-2); ++t) wprintf(" ");
-
- /** choose the icon */
- if (fold[i].view == VIEW_ADDRESSBOOK) {
- icon = "viewcontacts_16x.gif" ;
- }
- else if (fold[i].view == VIEW_CALENDAR) {
- icon = "calarea_16x.gif" ;
- }
- else if (fold[i].view == VIEW_CALBRIEF) {
- icon = "calarea_16x.gif" ;
- }
- else if (fold[i].view == VIEW_TASKS) {
- icon = "taskmanag_16x.gif" ;
- }
- else if (fold[i].view == VIEW_NOTES) {
- icon = "storenotes_16x.gif" ;
- }
- else if (fold[i].view == VIEW_MAILBOX) {
- icon = "privatemess_16x.gif" ;
- }
- else {
- icon = "chatrooms_16x.gif" ;
- }
-
- if (fold[i].selectable) {
- wprintf("<a href=\"dotgoto?room=");
- urlescputs(fold[i].room);
- wprintf("\">");
- wprintf("<img border=0 src=\"static/%s\" alt=\"\"> ", icon);
- }
- else {
- wprintf("<i>");
- }
- if (fold[i].hasnewmsgs) {
- wprintf("<span class=\"ib_roomlist_new\">");
- }
- else {
- wprintf("<span class=\"ib_roomlist_old\">");
- }
- extract_token(buf, fold[i].name, levels-1, '|', sizeof buf);
- escputs(buf);
- if (!strcasecmp(fold[i].name, "My Folders|Mail")) {
- wprintf(" (INBOX)");
- }
- wprintf("</span>");
- if (fold[i].selectable) {
- wprintf("</A>");
- }
- else {
- wprintf("</i>");
- }
- wprintf("<br />");
- wprintf("</div>\n"); /** roomdiv */
- }
- }
- wprintf("</div>\n"); /** floordiv */
-
-
- /** BEGIN: The old invisible pixel trick, to get our JavaScript to initialize */
- wprintf("<img src=\"static/blank.gif\" onLoad=\"\n");
-
- num_drop_targets = 0;
-
- for (i=0; i<max_folders; ++i) {
- levels = num_tokens(fold[i].name, '|');
- if (levels > 1) {
- wprintf("drop_targets_elements[%d]=$('roomdiv%d');\n", num_drop_targets, i);
- wprintf("drop_targets_roomnames[%d]='", num_drop_targets);
- jsescputs(fold[i].room);
- wprintf("';\n");
- ++num_drop_targets;
- }
- }
-
- wprintf("num_drop_targets = %d;\n", num_drop_targets);
- if ((ChrPtr(WC->floordiv_expanded)[0] != '\0')&&
- (ChrPtr(WC->floordiv_expanded)[1] != '\0')){
- wprintf("which_div_expanded = '%s';\n", ChrPtr(WC->floordiv_expanded));
- }
-
- wprintf("\">\n");
- /** END: The old invisible pixel trick, to get our JavaScript to initialize */
-}
-
-
-