<?php
-$cal = [];
-foreach (glob("$Page$Args/2*") as $url) {
- $parts = pathinfo($url);
- @list ($date, $suffix) = explode('.', $parts['filename'], 2);
- $cal[$date][ $suffix ? '' : @$parts['extension'] ] =
- preg_replace('/\.html$/', '', $url);
+global $User;
+if (isset($Page->place[0])) {
+ $Page->link .= '/'.$Page->place[0];
}
-print '<ul';
-if (count($cal) > 5) print ' class="cols"';
-print ">\n";
-foreach (array_reverse($cal) as $title => $versions) {
- print '<li>';
- if ($url = @$versions['html']) {
- printf('<a href="/%s">%s</a>', $url, $title);
+$cal = [];
+foreach (glob("{$Page->link}/2*") as $url) {
+ $link = preg_replace('/\.html$/', '', $url);
+ $name = pathinfo($link, PATHINFO_BASENAME);
+ @list ($date, $suffix) = explode('.', $name, 2);
+ $group = substr($date, 0, 4);
+ if (!isset($cal[$group][$date])) {
+ $cal[$group][$date] = [];
+ }
+ if (!is_dir($url) and filesize($url)) {
+ $cal[$group][$date][$suffix] = $link;
}
- elseif (implode('', array_keys($versions))) {
- list ($format, $url) = each($versions);
- include_once('format.inc.php');
- printf('%s (<a href="/%s">%sB %s</a>)',
- $title, $url, showsize(filesize($url)), $format
+}
+if (!$cal) {
+ return;
+}
+
+$year = 3600 * 24 * 365; # seconds per year
+$scale = 7; # em width per year
+$mindate = max(time(), strtotime($date) + ($year / $scale * 3)); # at least last entry plus 3em for centered text
+$length = ($mindate - strtotime(key(current($cal)))) / $year * $scale; # earliest entry position
+
+printf('<ul class="timeline" style="background-size:%.1fem">'."\n", $length);
+foreach (array_reverse($cal, TRUE) as $group => $rows) {
+ if (count($rows) > 1) {
+ $time = ($mindate - strtotime("$group-12-31T23:59")) / $year * $scale;
+ printf('<li class="range" style="left:%.1fem; width:%.1fem">',
+ $time, $time + $scale > $length ? $length - $time + 2 : $scale
);
+ print "<strong>$group</strong><ul>\n";
}
else {
- print $title;
+ $time = 0;
+ }
+
+ foreach ($rows as $title => $versions) {
+ $subtime = ($mindate - strtotime($title)) / $year * $scale - $time;
+ printf('<li style="left:%.1fem">', $subtime);
+ if ($url = @$versions['']) {
+ printf('<a href="/%s">%s</a>', $url, $title);
+ }
+ else {
+ print '<span>';
+ print $title;
+ if ($versions and $User->admin("edit {$Page->link}")) {
+ printf(' (%s)', implode(', ', array_map(
+ function ($format, $url) {
+ return sprintf('<a href="/%s">%s</a>', $url, $format);
+ },
+ array_keys($versions), $versions
+ )));
+ }
+ print '</span>';
+ }
+ print "</li>\n";
+ }
+
+ if (count($rows) > 1) {
+ print "</ul></li>\n";
}
- print "\n";
}
print "</ul>\n\n";