Offer meta tags in head for RSS feeds (uses templates)
authorArt Cancro <ajc@citadel.org>
Tue, 14 Sep 2010 16:55:01 +0000 (12:55 -0400)
committerArt Cancro <ajc@citadel.org>
Tue, 14 Sep 2010 16:55:01 +0000 (12:55 -0400)
citadel/room_ops.c
webcit/feed_generator.c
webcit/static/t/head.html

index 22e0cb2dd9e7c51d75a7d6341d0c3b81133d3b62..9aa14741ca4aa3035455f753464242da5cc92328 100644 (file)
@@ -147,12 +147,25 @@ void CtdlRoomAccess(struct ctdlroom *roombuf, struct ctdluser *userbuf,
                 * - It is a read-only room
                 */
                int post_allowed = 1;
-               if (userbuf->axlevel < AxProbU) post_allowed = 0;
-               if ((userbuf->axlevel < AxNetU) && (roombuf->QRflags & QR_NETWORK)) post_allowed = 0;
-               if (roombuf->QRflags & QR_READONLY) post_allowed = 0;
+               int reply_allowed = 1;
+               if (userbuf->axlevel < AxProbU) {
+                       post_allowed = 0;
+                       reply_allowed = 0;
+               }
+               if ((userbuf->axlevel < AxNetU) && (roombuf->QRflags & QR_NETWORK)) {
+                       post_allowed = 0;
+                       reply_allowed = 0;
+               }
+               if (roombuf->QRflags & QR_READONLY) {
+                       post_allowed = 0;
+                       reply_allowed = 0;
+               }
                if (post_allowed) {
                        retval = retval | UA_POSTALLOWED | UA_REPLYALLOWED;
                }
+               if (reply_allowed) {
+                       retval = retval | UA_REPLYALLOWED;
+               }
 
                /* If "collaborative deletion" is active for this room, any user who can post
                 * is also allowed to delete
index f259b00ee3c987a7d05e501db5371f8630eab4cf..ab8a4630eb84f3816d27984c228bcc383e1214e0 100644 (file)
@@ -165,6 +165,26 @@ void feed_rss(void) {
 }
 
 
+/*
+ * Offer the RSS feed meta tag for this room
+ */
+void tmplput_rssmeta(StrBuf *Target, WCTemplputParams *TP) 
+{
+       wcsession *WCC = WC;
+       char feed_link[1024];
+       char encoded_link[1024];
+
+       strcpy(feed_link, "/feed_rss?gotofirst=");
+       urlesc(&feed_link[20], sizeof(feed_link) - 20, (char *)ChrPtr(WCC->CurRoom.name) );
+       CtdlEncodeBase64(encoded_link, feed_link, strlen(feed_link), 0);
+
+       StrBufAppendPrintf(Target,
+               "<link rel=\"alternate\" title=\"RSS\" href=\"/B64%s\" type=\"application/rss+xml\">",
+               encoded_link
+       );
+}
+
+
 /*
  * Offer the RSS feed button for this room
  */
@@ -178,17 +198,17 @@ void tmplput_rssbutton(StrBuf *Target, WCTemplputParams *TP)
        urlesc(&feed_link[20], sizeof(feed_link) - 20, (char *)ChrPtr(WCC->CurRoom.name) );
        CtdlEncodeBase64(encoded_link, feed_link, strlen(feed_link), 0);
 
-       StrBufAppendPrintf(Target, "<a href=\"/B64%s\">", encoded_link);
+       StrBufAppendPrintf(Target, "<a type-\"application/rss+xml\" href=\"/B64%s\">", encoded_link);
        StrBufAppendPrintf(Target, "<img border=\"0\" src=\"static/rss_16x.png\">");
        StrBufAppendPrintf(Target, "</a>");
 }
 
 
-
 void 
 InitModule_RSS
 (void)
 {
        WebcitAddUrlHandler(HKEY("feed_rss"), "", 0, feed_rss, ANONYMOUS|COOKIEUNNEEDED);
        RegisterNamespace("THISROOM:FEED:RSS", 0, 0, tmplput_rssbutton, NULL, CTX_NONE);
+       RegisterNamespace("THISROOM:FEED:RSSMETA", 0, 0, tmplput_rssmeta, NULL, CTX_NONE);
 }
index 939dd2104031f27b206d9f68961e35b3881ff2a4..fc450450fbcb547c404d6fed360a8316879b5c93 100644 (file)
@@ -8,6 +8,7 @@
                <link href="static/styles/niftyCorners.css" rel="stylesheet" type="text/css">
                <link href="static/styles/webcit.css" rel="stylesheet" type="text/css">
                <link href="static/styles/datepicker.css" rel="stylesheet" type="text/css">
+               <?THISROOM:FEED:RSSMETA>
 
        <??("COND:LOGGEDIN",1)>
                <link href="do_template?template=iconbar_user" rel="stylesheet" type="text/css">