From f9245c046f6f2a4dd337c49d5cba577b67f37a36 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Mon, 23 May 2011 22:51:25 -0400 Subject: [PATCH] Added a 'permalink' link to the bottom of a blog post too, right next to the 'n comments' link. --- webcit/blogview_renderer.c | 48 ++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/webcit/blogview_renderer.c b/webcit/blogview_renderer.c index 215fa94ef..3d40a798c 100644 --- a/webcit/blogview_renderer.c +++ b/webcit/blogview_renderer.c @@ -1,7 +1,7 @@ /* * Blog view renderer module for WebCit * - * Copyright (c) 1996-2010 by the citadel.org team + * Copyright (c) 1996-2011 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -34,6 +34,26 @@ struct blogpost { }; +/* + * Generate a permalink for a post + * (Call with NULL arguments to make this function wcprintf() the permalink + * instead of writing it to the template) + */ +void tmplput_blog_permalink(StrBuf *Target, WCTemplputParams *TP) { + char perma[SIZ]; + + strcpy(perma, "/readfwd?go="); + urlesc(&perma[strlen(perma)], sizeof(perma)-strlen(perma), (char *)ChrPtr(WC->CurRoom.name)); + snprintf(&perma[strlen(perma)], sizeof(perma)-strlen(perma), "?p=%d", WC->bptlid); + if (!Target) { + wc_printf("%s", perma); + } + else { + StrBufAppendPrintf(Target, "%s", perma); + } +} + + /* * Destructor for 'struct blogpost' which does the rendering first. * By rendering from here, we eliminate the need for a separate iterator, although @@ -57,7 +77,9 @@ void blogpost_render_and_destroy(struct blogpost *bp) { urlescputs(ChrPtr(WC->CurRoom.name)); wc_printf("#comments\">"); wc_printf(_("%d comments"), bp->num_msgs - 1); - wc_printf(""); + wc_printf(" | %s", _("permalink")); wc_printf("


\n"); } else if (bp->num_msgs < 2) { @@ -66,6 +88,9 @@ void blogpost_render_and_destroy(struct blogpost *bp) { else { wc_printf("\n"); wc_printf(_("%d comments"), bp->num_msgs - 1); + wc_printf(" | %s", _("permalink")); wc_printf("
\n"); for (i=1; inum_msgs; ++i) { read_message(WC->WBuf, HKEY("view_blog_comment"), bp->msgs[i], NULL, &Mime); @@ -135,12 +160,12 @@ struct bltr blogview_learn_thread_references(long msgnum) { if (!strncasecmp(ChrPtr(Buf), "msgn=", 5)) { StrBufCutLeft(Buf, 5); - bltr.id = HashLittle(ChrPtr(Buf), StrLength(Buf)); + bltr.id = abs(HashLittle(ChrPtr(Buf), StrLength(Buf))); } else if (!strncasecmp(ChrPtr(Buf), "wefw=", 5)) { StrBufCutLeft(Buf, 5); /* trim the field name */ StrBufExtract_token(r, Buf, 0, '|'); - bltr.refs = HashLittle(ChrPtr(r), StrLength(r)); + bltr.refs = abs(HashLittle(ChrPtr(r), StrLength(r))); } } } @@ -222,7 +247,7 @@ int blogview_sortfunc(const void *s1, const void *s2) { int blogview_render(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { - /*HashList *BLOG = (HashList *) *ViewSpecific;*/ + /* HashList *BLOG = (HashList *) *ViewSpecific; */ /* * No code needed here -- we render during disposition. @@ -243,19 +268,6 @@ int blogview_Cleanup(void **ViewSpecific) return 0; } -/* - * Generate a permalink for a post - */ -void tmplput_blog_permalink(StrBuf *Target, WCTemplputParams *TP) { - char perma[SIZ]; - - strcpy(perma, "/readfwd?go="); - urlesc(&perma[strlen(perma)], sizeof(perma)-strlen(perma), ChrPtr(WC->CurRoom.name)); - snprintf(&perma[strlen(perma)], sizeof(perma)-strlen(perma), "?p=%d", WC->bptlid); - StrBufAppendPrintf(Target, "%s", perma); -} - - void InitModule_BLOGVIEWRENDERERS (void) -- 2.30.2