cvs diff: Diffing .
Index: project.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.css,v
retrieving revision 1.35.2.2
diff -u -p -r1.35.2.2 project.css
--- project.css	5 Dec 2008 19:17:52 -0000	1.35.2.2
+++ project.css	8 Jan 2009 18:25:25 -0000
@@ -1,5 +1,4 @@
 /* $Id: project.css,v 1.35.2.2 2008/12/05 19:17:52 dww Exp $ */
-/* $Name:  $ */
 
 .project table {
   width: auto;
@@ -51,3 +50,8 @@
 ul.project-terms {
   padding-left: 1.5em;
 }
+
+.project-feed-icon {
+  padding-left: 1em;
+}
+
Index: project.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.module,v
retrieving revision 1.309.2.12
diff -u -p -r1.309.2.12 project.module
--- project.module	29 Dec 2008 17:54:18 -0000	1.309.2.12
+++ project.module	8 Jan 2009 18:25:26 -0000
@@ -1253,3 +1253,13 @@ function project_can_cache() {
 
   return TRUE;
 }
+
+/**
+ * Display an RSS feed icon for use on project nodes.
+ */
+function theme_project_feed_icon($url, $title) {
+  if ($icon = theme('image', 'misc/feed.png', $title, $title)) {
+    return '<a href="'. check_url($url) .'" class="project-feed-icon">'. $icon. '</a>';
+  }
+}
+
cvs diff: Diffing po
cvs diff: Diffing release
Index: release/project_release.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.module,v
retrieving revision 1.66.2.10
diff -u -p -r1.66.2.10 project_release.module
--- release/project_release.module	7 Jan 2009 20:48:21 -0000	1.66.2.10
+++ release/project_release.module	8 Jan 2009 18:25:27 -0000
@@ -918,17 +918,24 @@ function project_release_view($node, $te
  * Display a list of releases for a given project
  * @ingroup project_release_api
  */
-function project_release_project_releases() {
-  $node = node_load(arg(1));
-
-  // Breadcrumb navigation
-  $breadcrumb[] = l($node->title, 'node/'. $node->nid);
-  project_project_set_breadcrumb($node, $breadcrumb);
+function project_release_project_releases($op = 'page') {
+  $nid = arg(1);
+  $node = node_load($nid);
 
-  $output = project_release_list($node);
+  switch ($op) {
+    case 'feed':
+      return project_release_feed($node);
 
-  drupal_set_title(t('Releases for %project', array('%project' => $node->title)));
-  return $output;
+    case 'page':
+    default:
+      // Breadcrumb navigation
+      $breadcrumb[] = l($node->title, 'node/'. $node->nid);
+      project_project_set_breadcrumb($node, $breadcrumb);
+      drupal_set_title(t('Releases for %project', array('%project' => $node->title)));
+      drupal_add_feed(url('node/'. $nid .'/release/feed'), t('RSS - releases for @project_title', array('@project_title' => $node->title)));
+      $output = project_release_list($node);
+      return $output;
+  }
 }
 
 /**
@@ -1003,7 +1010,7 @@ function project_release_get_releases($p
  * Returns a listing of project release nodes
  * @ingroup project_release_callback
  */
-function project_release_list($project, $main = 0) {
+function project_release_list($project) {
   if ($releases = project_release_get_releases($project, 1, 'date', 'files')) {
     $output = '';
     foreach ($releases as $release) {
@@ -1017,6 +1024,22 @@ function project_release_list($project, 
 }
 
 /**
+ * Prints an RSS feed of project release nodes
+ *
+ * @ingroup project_release_callback
+ */
+function project_release_feed($project) {
+  $project = node_invoke($project, 'view', FALSE, FALSE);
+  $channel['link'] = url('node/'. $project->nid .'/release', NULL, NULL, TRUE);
+  $channel['title'] = t('Releases for @project_title', array('@project_title' => $project->title));
+  $channel['description'] = $project->body;
+  $order_by = 'n.created';
+  $where = "AND (n.status = 1) AND (r.file_path <> '')";
+  $result = db_query_range(db_rewrite_sql("SELECT n.nid FROM {node} n INNER JOIN {project_release_nodes} r ON r.nid = n.nid WHERE (r.pid = %d) $where ORDER BY $order_by DESC"), $project->nid, 0, variable_get('feed_default_items', 10));
+  node_feed($result, $channel);
+}
+
+/**
  * Returns a listing of all active project release compatibility terms
  * in the system.
  * @ingroup project_release_api
@@ -1593,6 +1616,26 @@ function project_release_release_nodeapi
         }
       }
       break;
+
+    case 'rss item':
+      // Prepend the table of release info whenever a release is in a feed.
+      $node->body = $node->content['release_info']['#value'] . $node->body;
+      $node->teaser = $node->content['release_info']['#value'] . $node->teaser;
+      // If the release node has a file, include an enclosure attribute for it.
+      if (!empty($node->file_path)) {
+        $file_link = theme('project_release_download_link', $node->file_path, NULL, TRUE);
+        return array(
+          array(
+            'key' => 'enclosure',
+            'attributes' => array(
+              'url' => $file_link['href'],
+              'length' => filesize(file_create_path($node->file_path)),
+              'type' => 'application/octet-stream',
+            )
+          )
+        );
+      }
+      break;
   }
 }
 
@@ -1683,7 +1726,7 @@ function project_release_project_page_li
     'weight' => 2,
     'clear' => TRUE,
     'links' => array(
-      'view_all_releases' => l(t('View all releases'), 'node/'. $node->nid .'/release')
+      'view_all_releases' => l(t('View all releases'), 'node/'. $node->nid .'/release') . theme('project_feed_icon', url('node/'. $node->nid .'/release/feed'), t('RSS feed of all releases'))
     ),
   );
 
cvs diff: Diffing release/po
cvs diff: Diffing usage
cvs diff: Diffing usage/po
cvs diff: Diffing usage/tests
