? generate-content.php
? generate-taxonomy.php
? modules/devel
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.555
diff -u -F^f -r1.555 common.inc
--- includes/common.inc	14 Aug 2006 07:14:48 -0000	1.555
+++ includes/common.inc	16 Aug 2006 20:39:19 -0000
@@ -148,6 +148,31 @@ function drupal_get_headers() {
   return drupal_set_header();
 }
 
+/*
+ * Add a feed URL for the current page.
+ *
+ * @param $url
+ *   The url for the feed
+ * @param $theme_function
+ *   The name of the theming function to use to style the feed icon, defaults to theme_feed_icon()
+ */
+function drupal_add_feed($url = NULL, $theme_function = 'feed_icon') {
+  static $stored_feed_links = array();
+  
+  if (!is_null($url)) {
+    $stored_feed_links[$url] = theme($theme_function, $url);
+  }
+  return $stored_feed_links;
+}
+
+/**
+ * Get the feed URLs for the current page.
+ */
+function drupal_get_feeds() {
+  $feeds = drupal_add_feed();
+  return implode($feeds, "\n");
+}
+
 /**
  * @name HTTP handling
  * @{
Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.306
diff -u -F^f -r1.306 theme.inc
--- includes/theme.inc	5 Aug 2006 22:17:31 -0000	1.306
+++ includes/theme.inc	16 Aug 2006 20:39:20 -0000
@@ -387,6 +387,7 @@ function theme_page($content) {
 
   $output .= "\n<!-- begin content -->\n";
   $output .= $content;
+  $output .= drupal_get_feeds();
   $output .= "\n<!-- end content -->\n";
 
   $output .= '</td></tr></table>';
Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.296
diff -u -F^f -r1.296 aggregator.module
--- modules/aggregator/aggregator.module	14 Aug 2006 07:14:48 -0000	1.296
+++ modules/aggregator/aggregator.module	16 Aug 2006 20:39:21 -0000
@@ -1097,12 +1097,11 @@ function _aggregator_page_list($sql, $op
   // arg(1) is undefined if we are at the top aggregator URL
   // is there a better way to do this?
   if (!arg(1)) {
-    $form['feed_icon'] = array('#value' => theme('feed_icon', url('aggregator/rss')));
+    drupal_add_feed(url('aggregator/rss'));
   }
   elseif (arg(1) == 'categories' && arg(2) && !arg(3)) {
-    $form['feed_icon'] = array('#value' => theme('feed_icon', url('aggregator/rss/' . arg(2))));
+    drupal_add_feed(url('aggregator/rss/' . arg(2)));
   }
-  $output .= $form['feed_icon']['#value'];
 
   return ($categorize) ? drupal_get_form('aggregator_page_list', $form) : $output;
 }
Index: modules/blog/blog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v
retrieving revision 1.256
diff -u -F^f -r1.256 blog.module
--- modules/blog/blog.module	10 Aug 2006 15:42:32 -0000	1.256
+++ modules/blog/blog.module	16 Aug 2006 20:39:21 -0000
@@ -163,7 +163,7 @@ function blog_page_user($uid) {
       $output .= node_view(node_load($node->nid), 1);
     }
     $output .= theme('pager', NULL, variable_get('default_nodes_main', 10));
-    $output .= theme('feed_icon', url("blog/$account->uid/feed"));
+    drupal_add_feed(url("blog/$account->uid/feed"));
 
     drupal_add_link(array('rel' => 'alternate',
                           'type' => 'application/rss+xml',
@@ -190,7 +190,7 @@ function blog_page_last() {
     $output .= node_view(node_load($node->nid), 1);
   }
   $output .= theme('pager', NULL, variable_get('default_nodes_main', 10));
-  $output .= theme('feed_icon', url('blog/feed'));
+  drupal_add_feed(url('blog/feed'));
 
   drupal_add_link(array('rel' => 'alternate',
                         'type' => 'application/rss+xml',
Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.347
diff -u -F^f -r1.347 forum.module
--- modules/forum/forum.module	14 Aug 2006 07:14:49 -0000	1.347
+++ modules/forum/forum.module	16 Aug 2006 20:39:22 -0000
@@ -933,7 +933,7 @@ function theme_forum_display($forums, $t
                             'href' => url('taxonomy/term/'. $tid .'/0/feed')));
 
       $output .= theme('forum_topic_list', $tid, $topics, $sortby, $forum_per_page);
-      $output .= theme('feed_icon', url("taxonomy/term/$tid/0/feed"));
+      drupal_add_feed(url("taxonomy/term/$tid/0/feed"));
     }
     $output .= '</div>';
   }
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.674
diff -u -F^f -r1.674 node.module
--- modules/node/node.module	15 Aug 2006 07:30:17 -0000	1.674
+++ modules/node/node.module	16 Aug 2006 20:39:25 -0000
@@ -2247,10 +2247,12 @@ function node_page_default() {
   $result = pager_query(db_rewrite_sql('SELECT n.nid, n.sticky, n.created FROM {node} n WHERE n.promote = 1 AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC'), variable_get('default_nodes_main', 10));
 
   if (db_num_rows($result)) {
+    $feed_url = url('rss.xml', NULL, NULL, TRUE);
+    drupal_add_feed($feed_url);
     drupal_add_link(array('rel' => 'alternate',
                           'type' => 'application/rss+xml',
                           'title' => t('RSS'),
-                          'href' => url('rss.xml', NULL, NULL, TRUE)));
+                          'href' => $feed_url));
 
     $output = '';
     while ($node = db_fetch_object($result)) {
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.301
diff -u -F^f -r1.301 taxonomy.module
--- modules/taxonomy/taxonomy.module	15 Aug 2006 05:50:48 -0000	1.301
+++ modules/taxonomy/taxonomy.module	16 Aug 2006 20:39:26 -0000
@@ -1257,7 +1257,7 @@ function taxonomy_term_page($str_tids = 
                                 'href' => url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed')));
 
           $output = taxonomy_render_nodes(taxonomy_select_nodes($tids, $terms['operator'], $depth, TRUE));
-          $output .= theme('feed_icon', url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed'));
+          drupal_add_feed(url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed'));
           return $output;
           break;
 
Index: themes/bluemarine/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/bluemarine/page.tpl.php,v
retrieving revision 1.17
diff -u -F^f -r1.17 page.tpl.php
--- themes/bluemarine/page.tpl.php	1 Feb 2006 16:04:02 -0000	1.17
+++ themes/bluemarine/page.tpl.php	16 Aug 2006 20:39:26 -0000
@@ -42,6 +42,7 @@
         <?php print $help ?>
         <?php print $messages ?>
         <?php print $content; ?>
+        <?php print $feed_icons; ?>
       </div>
     </td>
     <?php if ($sidebar_right) { ?><td id="sidebar-right">
Index: themes/chameleon/chameleon.theme
===================================================================
RCS file: /cvs/drupal/drupal/themes/chameleon/chameleon.theme,v
retrieving revision 1.46
diff -u -F^f -r1.46 chameleon.theme
--- themes/chameleon/chameleon.theme	3 Aug 2006 07:06:36 -0000	1.46
+++ themes/chameleon/chameleon.theme	16 Aug 2006 20:39:26 -0000
@@ -91,6 +91,7 @@ function chameleon_page($content) {
 
   $output .= "\n<!-- begin content -->\n";
   $output .= $content;
+  $output .= drupal_get_feeds();
   $output .= "\n<!-- end content -->\n";
 
   if ($footer = variable_get('site_footer', '')) {
Index: themes/engines/phptemplate/phptemplate.engine
===================================================================
RCS file: /cvs/drupal/drupal/themes/engines/phptemplate/phptemplate.engine,v
retrieving revision 1.40
diff -u -F^f -r1.40 phptemplate.engine
--- themes/engines/phptemplate/phptemplate.engine	15 Aug 2006 05:32:46 -0000	1.40
+++ themes/engines/phptemplate/phptemplate.engine	16 Aug 2006 20:39:26 -0000
@@ -196,6 +196,7 @@ function phptemplate_page($content) {
     'breadcrumb'          => theme('breadcrumb', drupal_get_breadcrumb()),
     'closure'             => theme('closure'),
     'content'             => '<!-- begin content -->' . $content . '<!-- end content -->',
+    'feed_icons'           => drupal_get_feeds(),
     'footer_message'      => filter_xss_admin(variable_get('site_footer', FALSE)) . "\n" . theme('blocks', 'footer'),
     'head'                => drupal_get_html_head(),
     'head_title'          => implode(' | ', $head_title),
Index: themes/pushbutton/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/pushbutton/page.tpl.php,v
retrieving revision 1.13
diff -u -F^f -r1.13 page.tpl.php
--- themes/pushbutton/page.tpl.php	1 Feb 2006 16:04:03 -0000	1.13
+++ themes/pushbutton/page.tpl.php	16 Aug 2006 20:39:27 -0000
@@ -80,7 +80,8 @@
         <?php endif; ?>
 
       <!-- start main content -->
-      <?php print($content) ?>
+      <?php print $content; ?>
+      <?php print $feed_icons; ?>
       <!-- end main content -->
 
       </div><!-- main -->
