From 25ff4aa2dc0584f271c073b03eb263cf359d9064 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Mon, 25 Oct 2010 11:47:47 -0400 Subject: [PATCH] Blog rendering continued... --- webcit/blogview_renderer.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/webcit/blogview_renderer.c b/webcit/blogview_renderer.c index 30ede0c14..fcfada6e7 100644 --- a/webcit/blogview_renderer.c +++ b/webcit/blogview_renderer.c @@ -27,6 +27,7 @@ * Array type for a blog post. The first message is the post; the rest are comments */ struct blogpost { + int top_level_id; long *msgs; /* Array of msgnums for messages we are displaying */ int num_msgs; /* Number of msgnums stored in 'msgs' */ int alloc_msgs; /* Currently allocated size of array */ @@ -37,15 +38,35 @@ struct blogpost { * Destructor for 'struct blogpost' which does the rendering first. * By rendering from here, we eliminate the need for a separate iterator, although * we might run into trouble when we get around to displaying newest-to-oldest... - * FIXME do the needful with regard to gettext */ void blogpost_render_and_destroy(struct blogpost *bp) { const StrBuf *Mime; + int p = 0; + int i; - if (bp->num_msgs > 0) { + p = atoi(BSTR("p")); /* are we looking for a specific post? */ + + if ( ((p == 0) || (p == bp->top_level_id)) && (bp->num_msgs > 0) ) { + /* Show the top level post */ read_message(WC->WBuf, HKEY("view_message"), bp->msgs[0], NULL, &Mime); - wc_printf("
%d comments
\n", bp->num_msgs - 1); - wc_printf("
\n"); + + if (p == 0) { + /* Show the number of comments */ + wc_printf("top_level_id); + urlescputs(ChrPtr(WC->CurRoom.name)); + wc_printf("\">%d comments", bp->num_msgs - 1); + } + else if (bp->num_msgs < 2) { + wc_printf("dere r no comments here!
\n"); + } + else { + wc_printf("%d comments
\n", bp->num_msgs - 1); + wc_printf("
"); + for (i=1; inum_msgs; ++i) { + read_message(WC->WBuf, HKEY("view_message"), bp->msgs[i], NULL, &Mime); + } + wc_printf("
"); + } } @@ -146,6 +167,7 @@ int blogview_LoadMsgFromServer(SharedMessageStatus *Stat, bp = malloc(sizeof(struct blogpost)); if (!bp) return(200); memset(bp, 0, sizeof (struct blogpost)); + bp->top_level_id = b.id; Put(BLOG, (const char *)&b.id, sizeof(b.id), bp, (DeleteHashDataFunc)blogpost_render_and_destroy); } @@ -195,11 +217,8 @@ int blogview_render(SharedMessageStatus *Stat, void **ViewSpecific, long oper) /*HashList *BLOG = (HashList *) *ViewSpecific;*/ /* - * This will require several different modes: - * * Top level - * * Single story permalink - * * Comments - * * etc + * No code needed here -- we render during disposition. + * Maybe this is the location where we want to handle pretty permalinks. */ return(0); -- 2.30.2