<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -7,9 +7,13 @@
   * Header images are now also pulled from child themes
   * Child themes can define their own alternate styles
   * README file introducing users and developers to working with Tarski
+  * Home and page links are now added to the navbar via the `tarski_navbar`
+    filter
 
 #### Tweaks
 
+  * Page and external navbar links now have more meaningful array keys when
+    passed to the `tarski_navbar` filter
   * Search form uses [HTML5][html5] placeholder text where available
   * Switched to the new WordPress escaping API
   * Rewritten TarskiOptions object deserialisation</diff>
      <filename>CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -91,6 +91,8 @@ add_action('th_header', 'tarski_titleandtag');
 add_action('th_header', 'navbar_wrapper');
 add_action('th_header', 'tarski_next_prev_posts');
 
+add_filter('tarski_navbar', '_tarski_navbar_home_link');
+add_filter('tarski_navbar', '_tarski_navbar_page_links');
 add_filter('tarski_navbar', 'add_external_links');
 add_filter('tarski_navbar', 'add_admin_link', 20);
 add_filter('tarski_navbar', 'wrap_navlist', 21);</diff>
      <filename>app/launcher.php</filename>
    </modified>
    <modified>
      <diff>@@ -243,56 +243,24 @@ function home_link_name() {
 }
 
 /**
- * tarski_navbar() - Outputs the Tarski navbar.
- * 
+ * Outputs the Tarski navbar.
+ *
  * @since 1.2
+ *
+ * @uses apply_filters
+ *
  * @param boolean $return
- * @global object $wpdb
  * @return string $navbar
+ *
  * @hook filter tarski_navbar
  * Filter the HTML generated for the navbar.
  */
 function tarski_navbar($return = false) {
-	global $wpdb;
-	
-	$current = ' class=&quot;nav-current&quot;';
-	$navbar  = array();
-	
-	if (get_option('show_on_front') != 'page')
-		$navbar['home'] = sprintf(
-			'&lt;li&gt;&lt;a id=&quot;nav-home&quot;%1$s href=&quot;%2$s&quot; rel=&quot;home&quot;&gt;%3$s&lt;/a&gt;&lt;/li&gt;',
-			is_home() ? $current : '',
-			user_trailingslashit(get_bloginfo('url')),
-			home_link_name());
-	
-	$pages = &amp;get_pages('sort_column=post_parent,menu_order');
-	$nav_pages = explode(',', get_tarski_option('nav_pages'));
-	
-	if (!empty($nav_pages) &amp;&amp; !empty($pages)) {
-		foreach ($pages as $page) {
-			if (in_array($page-&gt;ID, $nav_pages)) {
-				$page_status = is_page($page-&gt;ID) || ((get_option('show_on_front') == 'page') &amp;&amp; (get_option('page_for_posts') == $page-&gt;ID) &amp;&amp; is_home())
-					? $current
-					: '';
-				
-				$navbar[$page-&gt;ID] = sprintf(
-					'&lt;li&gt;&lt;a id=&quot;nav-%1$s&quot;%2$s href=&quot;%3$s&quot;&gt;%4$s&lt;/a&gt;&lt;/li&gt;',
-					$page-&gt;ID . '-' . $page-&gt;post_name,
-					$page_status,
-					get_permalink($page-&gt;ID),
-					htmlspecialchars($page-&gt;post_title)
-				);
-			}
-		}
-	}
-	
-	// Filters should return an array
-	$navbar = apply_filters('tarski_navbar', $navbar);
-
-	// But if they don't, the function will return false
+	$navbar = apply_filters('tarski_navbar', array());
+    
 	$navbar = is_array($navbar) &amp;&amp; !empty($navbar)
-		? &quot;\n&quot; . implode(&quot;\n&quot;, $navbar) . &quot;\n\n&quot;
-		: false;
+		? sprintf(&quot;\n%s\n\n&quot;, implode(&quot;\n&quot;, $navbar))
+		: '';
 	
 	if ($return)
 		return $navbar;
@@ -301,83 +269,166 @@ function tarski_navbar($return = false) {
 }
 
 /**
- * add_external_links() - Adds external links to the Tarski navbar.
+ * Adds a 'Home' link to the navbar.
+ *
+ * @see tarski_navbar
+ * @uses home_link_name
+ *
+ * @param array $navbar
+ * @return array $navbar
+ */
+function _tarski_navbar_home_link($navbar) {
+    if (!is_array($navbar)) $navbar = array();
+    
+    if (get_option('show_on_front') != 'page')
+        $navbar['home'] = sprintf(
+            '&lt;li&gt;&lt;a id=&quot;nav-home&quot;%1$s href=&quot;%2$s&quot; rel=&quot;home&quot;&gt;%3$s&lt;/a&gt;&lt;/li&gt;',
+            is_home() ? ' class=&quot;nav-current&quot;' : '',
+            user_trailingslashit(get_bloginfo('url')),
+            home_link_name());
+    
+    return $navbar;
+}
+
+/**
+ * Adds page links to the navbar.
+ *
+ * @see tarski_navbar
+ * @uses get_permalink
+ *
+ * @global object $wpdb
+ * @param array $navbar
+ * @return array $navbar
+ */
+function _tarski_navbar_page_links($navbar) {
+    global $wpdb;
+    
+    if (!is_array($navbar)) $navbar = array();
+    
+    $pages     = &amp;get_pages('sort_column=post_parent,menu_order');
+    $nav_pages = explode(',', get_tarski_option('nav_pages'));
+    
+    if (empty($nav_pages) || empty($pages)) return $navbar;
+    
+    foreach ($pages as $page) {
+        if (!in_array($page-&gt;ID, $nav_pages)) continue;
+        
+        $page_status = _tarski_on_page($page-&gt;ID)
+                     ? ' class=&quot;nav-current&quot;'
+                     : '';
+        
+        $navbar['page-' . $page-&gt;ID] = sprintf(
+            '&lt;li&gt;&lt;a id=&quot;nav-%1$s&quot;%2$s href=&quot;%3$s&quot;&gt;%4$s&lt;/a&gt;&lt;/li&gt;',
+            $page-&gt;ID . '-' . $page-&gt;post_name,
+            $page_status,
+            get_permalink($page-&gt;ID),
+            htmlspecialchars($page-&gt;post_title));
+    }
+    
+    return $navbar;
+}
+
+/**
+ * Utility function to determine whether the user is viewing a particular page.
+ *
+ * @see _tarski_navbar_page_links
+ * @uses is_page
+ * @uses is_home
+ *
+ * @param integer
+ * @return boolean
+ */
+function _tarski_on_page($id) {
+     return is_page($id) ||
+            ((get_option('show_on_front') == 'page') &amp;&amp;
+             (get_option('page_for_posts') == $id) &amp;&amp;
+             is_home());
+}
+
+/**
+ * Adds external links to the navbar.
  * 
  * @since 2.0
- * @see tarski_navbar()
+ *
+ * @see tarski_navbar
+ * @uses get_bookmarks
+ *
  * @param array $navbar
  * @return array $navbar
  */
 function add_external_links($navbar) {
-	if(!is_array($navbar))
-		$navbar = array();
-	
-	if(get_tarski_option('nav_extlinkcat')) {
-		$extlinks_cat = get_tarski_option('nav_extlinkcat');
-		$extlinks = get_bookmarks(&quot;category=$extlinks_cat&quot;);
-		$target = $rel = '';
-		$title  = '';
-		foreach($extlinks as $link) {
-			if($link-&gt;link_rel) {
-				$rel = 'rel=&quot;' . $link-&gt;link_rel . '&quot; ';
-			}
-			if($link-&gt;link_target) {
-				$target = 'target=&quot;' . $link-&gt;link_target . '&quot; ';
-			}
-			if($link-&gt;link_description) {
-				$title = 'title=&quot;'. $link-&gt;link_description . '&quot; ';
-			}
-			$navbar[] = sprintf(
-				'&lt;li&gt;&lt;a id=&quot;nav-link-%1$s&quot; %2$s href=&quot;%3$s&quot;&gt;%4$s&lt;/a&gt;&lt;/li&gt;',
-				$link-&gt;link_id,
-				$rel . $target . $title,
-				$link-&gt;link_url,
-				$link-&gt;link_name
-			);
-		}
-	}
-	
-	return $navbar;
+    if (!is_array($navbar)) $navbar = array();
+    
+    if (!get_tarski_option('nav_extlinkcat')) return $navbar;
+    
+    $extlinks_cat = get_tarski_option('nav_extlinkcat');
+    $extlinks = get_bookmarks(&quot;category=$extlinks_cat&quot;);
+    $target = $rel = '';
+    $title  = '';
+    foreach ($extlinks as $link) {
+        if ($link-&gt;link_rel)
+            $rel = 'rel=&quot;' . $link-&gt;link_rel . '&quot; ';
+        
+        if ($link-&gt;link_target)
+            $target = 'target=&quot;' . $link-&gt;link_target . '&quot; ';
+        
+        if ($link-&gt;link_description)
+            $title = 'title=&quot;'. $link-&gt;link_description . '&quot; ';
+    	
+    	$navbar['link-' . $link-&gt;ID] = sprintf(
+            '&lt;li&gt;&lt;a id=&quot;nav-link-%1$s&quot; %2$s href=&quot;%3$s&quot;&gt;%4$s&lt;/a&gt;&lt;/li&gt;',
+            $link-&gt;link_id,
+            $rel . $target . $title,
+            $link-&gt;link_url,
+            $link-&gt;link_name);
+    }
+    
+    return $navbar;
 }
 
 /**
  * Adds a WordPress dashboard link to the Tarski navbar.
  *
  * @since 2.0
- * @see tarski_navbar()
+ *
+ * @see tarski_navbar
+ * @uses is_user_logged_in
+ * @uses admin_url
  *
  * @param array $navbar
  * @return array $navbar
  */
 function add_admin_link($navbar) {
-	if (is_user_logged_in())
-		$navbar['admin'] = sprintf(
-			'&lt;li&gt;&lt;a id=&quot;nav-admin&quot; href=&quot;%1$s&quot; title=&quot;%3$s&quot;&gt;%2$s&lt;/a&gt;&lt;/li&gt;',
-			 admin_url(), __('Dashboard &amp;rarr;', 'tarski'),
-			 __('View your dashboard', 'tarski'));
-	
-	return $navbar;
+    if (is_user_logged_in())
+        $navbar['admin'] = sprintf(
+            '&lt;li&gt;&lt;a id=&quot;nav-admin&quot; href=&quot;%1$s&quot; title=&quot;%3$s&quot;&gt;%2$s&lt;/a&gt;&lt;/li&gt;',
+            admin_url(), __('Dashboard &amp;rarr;', 'tarski'),
+            __('View your dashboard', 'tarski'));
+    
+    return $navbar;
 }
 
 /**
- * wrap_navlist() - Wraps the Tarski navbar in an unordered list element.
+ * Wraps the Tarski navbar in an unordered list element.
  * 
- * Unlike other navbar filters, wrap_navlist() doesn't make $navbar an array
+ * Unlike other navbar filters, wrap_navlist doesn't make $navbar an array
  * if it isn't one, since that would result in it outputting an empty
  * unordered list. Instead, it simply returns false.
+ *
  * @since 2.0
- * @see tarski_navbar()
+ * @see tarski_navbar
  * @param string $navbar
  * @return string $navbar
  */
 function wrap_navlist($navbar) {
-	if (is_array($navbar)) {
-		array_unshift($navbar, '&lt;ul class=&quot;primary xoxo&quot;&gt;');
-		array_push($navbar, '&lt;/ul&gt;');
-		return $navbar;
-	} else {
-		return false;
-	}
+    if (is_array($navbar)) {
+        array_unshift($navbar, '&lt;ul class=&quot;primary xoxo&quot;&gt;');
+        array_push($navbar, '&lt;/ul&gt;');
+    } else {
+        $navbar = '';
+    }
+    
+    return $navbar;
 }
 
 /**</diff>
      <filename>library/helpers/template_helper.php</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5cab222ba83cbd5052810f4167fb5ea8b9cb47e1</id>
    </parent>
  </parents>
  <author>
    <name>Benedict Eastaugh</name>
    <email>benedict@eastaugh.net</email>
  </author>
  <url>http://github.com/ionfish/tarski/commit/970c02ed121984274b1e048639e1d641b115dff0</url>
  <id>970c02ed121984274b1e048639e1d641b115dff0</id>
  <committed-date>2009-10-23T16:37:53-07:00</committed-date>
  <authored-date>2009-10-23T16:37:53-07:00</authored-date>
  <message>Add page and home links to the navbar via filters, and give page and external links more meaningful array keys to pass to filters defined on the th_navbar hook.

Fixes gh-19. Fixes gh-20.</message>
  <tree>6bf6c5dcabe636540e48b8d880579f609157ce40</tree>
  <committer>
    <name>Benedict Eastaugh</name>
    <email>benedict@eastaugh.net</email>
  </committer>
</commit>
