<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,9 @@
 Revision history for Perl extension HTML::Timeline.
 
+1.04  Fri Aug 29 14:44:00 2008
+	- Download Phil Durbin's patches from github
+	- Implement missing_as_table (see docs for details)
+
 1.03  Fri Aug 22 12:23:00 2008
 	- Add support for ~/.timelinerc, using Config::IniFiles
 	- Rename Changes.txt to CHANGES because search.cpan.org won't display Changes.txt</diff>
      <filename>CHANGES</filename>
    </modified>
    <modified>
      <diff>@@ -3,9 +3,21 @@ Name=HTML::Timeline
 Configlog.Creator=Module::Metadata::Changes V 1.01
 Configlog.Parser=Config::IniFiles V 2.39
 
+[V 1.04]
+Date=2008-08-29T14:44:00
+Comments= &lt;&lt;EOT
+- Download Phil Durbin's patches from github
+- Implement missing_as_table (see docs for details)
+EOT
+
 [V 1.03]
 Date=2008-08-22T12:23:00
-Comments=- Add support for ~/.timelinerc using Config::IniFiles
+Comments= &lt;&lt;EOT
+- Add support for ~/.timelinerc using Config::IniFiles
+- Rename Changes.txt to CHANGES because search.cpan.org won't display Changes.txt
+- Ensure spouse of root person is included when processing descendents and spouses
+- Fix date-parsing via Gedcom::Date
+EOT
 
 [V 1.02]
 Date=2008-08-18T13:50:00</diff>
      <filename>Changelog.ini</filename>
    </modified>
    <modified>
      <diff>@@ -31,6 +31,7 @@ push @option, 'everyone';
 push @option, 'gedcom_file=s';
 push @option, 'help';
 push @option, 'include_spouses';
+push @option, 'missing_as_table';
 push @option, 'output_dir=s';
 push @option, 'root_person=s';
 push @option, 'template_dir=s';
@@ -70,6 +71,7 @@ timeline.pl [options]
 	-gedcom_file a_file_name
 	-help
 	-include_spouses
+	-missing_as_table
 	-output_dir a_dir_name
 	-root_person a_personal_name
 	-template_dir a_dir_name
@@ -126,6 +128,12 @@ If this option is used, and descendents are processed, spouses are included.
 
 If this option is not used, spouses are ignored.
 
+=item -missing_as_table
+
+If this option is used, people with missing birthdates are listed under the timeline, in a table.
+
+If this option is not used, such people appear on the timeline, with today's date as their birthdate.
+
 =item -output_dir a_dir_name
 
 If this option is used, the output HTML and XML files will be created in this directory.</diff>
      <filename>bin/timeline.pl</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,7 @@ var resizeTimerID = null;
 &lt;body onload=&quot;onLoad();&quot; onresize=&quot;onResize();&quot;&gt;
   &lt;h1&gt;Timeline&lt;/h1&gt;
   &lt;div id=&quot;my-timeline&quot; style=&quot;height: &lt;tmpl_var name=timeline_height&gt;px; border: 1px solid #aaa&quot;&gt;&lt;/div&gt;
-  &lt;tmpl_if name=missing&gt;
+  &lt;tmpl_if name=missing_as_table&gt;
   &lt;p&gt;
 	&lt;tmpl_var name=missing&gt;
   &lt;/p&gt;
@@ -55,6 +55,10 @@ var resizeTimerID = null;
 	  &lt;tr&gt;&lt;th&gt;&lt;tmpl_var name=name&gt;&lt;/th&gt;&lt;td&gt;&lt;tmpl_var name=death_date&gt;&lt;/td&gt;
 	&lt;/tmpl_loop&gt;
   &lt;/table&gt;
+  &lt;tmpl_else&gt;
+  &lt;p&gt;
+	People excluded because of missing birth dates have been given a birthdate of &lt;tmpl_var name=todays_date&gt;.
+  &lt;/p&gt;
   &lt;/tmpl_if&gt;
   &lt;hr /&gt;
   &lt;p&gt;Note: You should see 2 timescales at the bottom of the timeline. You can click-and-drag</diff>
      <filename>examples/timeline.tmpl</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,7 @@ format
 gedcom_file
 gedobj
 include_spouses
+missing_as_table
 output_dir
 root_person
 template_dir
@@ -58,7 +59,7 @@ our @EXPORT = qw(
 
 );
 
-our $VERSION = '1.03';
+our $VERSION = '1.04';
 
 # -----------------------------------------------
 
@@ -78,7 +79,9 @@ sub clean_persons_name
 
 sub generate_xml_file
 {
-	my($self, $people) = @_;
+	my($self, $people)   = @_;
+	my($missing_message) = 'People excluded because of missing birth dates: ';
+	my($todays_date)     = 1900 + (localtime() )[5];
 
 	# Process each person.
 
@@ -192,6 +195,13 @@ sub generate_xml_file
 		}
 	}
 
+	if ( ($self -&gt; missing_as_table() == 0) &amp;&amp; ($#missing &gt;= 0) )
+	{
+		my($missing) = join(', ', map{$$_{'name'} } @missing);
+
+		push @xml, qq|  &lt;event title=&quot;Missing&quot; start=&quot;$todays_date&quot; end=&quot;$todays_date&quot;&gt;$missing&lt;/event&gt;|;
+	}
+
 	push @xml, '&lt;/data&gt;';
 
 	# Write timeline.xml.
@@ -221,14 +231,22 @@ sub generate_xml_file
 		$output_file_name = &quot;$url_for_xml/$output_file_name&quot;; # No Path::Class here.
 	}
 
-	$template -&gt; param(earliest_date   =&gt; $earliest_date);
-	$template -&gt; param(timeline_height =&gt; $self -&gt; timeline_height() );
-	$template -&gt; param(xml_file_name   =&gt; $output_file_name);
+	$template -&gt; param(earliest_date    =&gt; $earliest_date);
+	$template -&gt; param(missing_as_table =&gt; $self -&gt; missing_as_table() );
+	$template -&gt; param(timeline_height  =&gt; $self -&gt; timeline_height() );
+	$template -&gt; param(xml_file_name    =&gt; $output_file_name);
 
-	if (@missing)
+	if ($#missing &gt;= 0)
 	{
-		$template -&gt; param(missing      =&gt; 'People excluded because of missing birth dates:');
-		$template -&gt; param(missing_loop =&gt; [map{ { death_date =&gt; $$_{'death_date'}, name =&gt; $$_{'name'} } } @missing]);
+		if ($self -&gt; missing_as_table() == 1)
+		{
+			$template -&gt; param(missing      =&gt; $missing_message);
+			$template -&gt; param(missing_loop =&gt; [map{ { death_date =&gt; $$_{'death_date'}, name =&gt; $$_{'name'} } } @missing]);
+		}
+		else
+		{
+			$template -&gt; param(todays_date =&gt; $todays_date);
+		}
 	}
 
 	$output_file_name = $self -&gt; web_page();
@@ -296,6 +314,7 @@ ancestors
 everyone
 gedcom_file
 include_spouses
+missing_as_table
 output_dir
 root_person
 template_dir
@@ -311,10 +330,11 @@ xml_file
 
 	$self -&gt; ancestors(0);
 	$self -&gt; everyone(0);
-	$self -&gt; format('%-15s: %s'); # Not in the @options array!
+	$self -&gt; format('%-16s: %s'); # Not in the @options array!
 	$self -&gt; gedcom_file('bach.ged');
 	$self -&gt; gedobj(''); # Not in the @options array!
 	$self -&gt; include_spouses(0);
+	$self -&gt; missing_as_table(0);
 	$self -&gt; output_dir('');
 	$self -&gt; root_person('Johann Sebastian Bach');
 	$self -&gt; template_dir('.');
@@ -525,6 +545,12 @@ If this option is 0, spouses are ignored.
 
 The default is 0.
 
+=item missing_as_table
+
+If this option is 1, people with missing birthdates are listed under the timeline, in a table.
+
+If this option is 0, such people appear on the timeline, with today's date as their birthdate.
+
 =item output_dir a_dir_name
 
 If this option is used, the output HTML and XML files will be created in this directory.</diff>
      <filename>lib/HTML/Timeline.pm</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d2f511387c805173833754c360d3f6410f777fec</id>
    </parent>
  </parents>
  <author>
    <name>Ron Savage</name>
    <email>ron@savage.net.au</email>
  </author>
  <url>http://github.com/ronsavage/html--timeline/commit/304bcaa62e7a5768488956ecb44146e93274f65a</url>
  <id>304bcaa62e7a5768488956ecb44146e93274f65a</id>
  <committed-date>2008-08-28T21:47:05-07:00</committed-date>
  <authored-date>2008-08-28T21:47:05-07:00</authored-date>
  <message>Implement missing_as_table</message>
  <tree>e536ab7ccb0fc0e448aca303845b1aca90d32bd5</tree>
  <committer>
    <name>Ron Savage</name>
    <email>ron@savage.net.au</email>
  </committer>
</commit>
