George S. Baugh 5 ani în urmă
părinte
comite
cbc7097c91
3 a modificat fișierele cu 65 adăugiri și 7 ștergeri
  1. 7 3
      lib/Trog/Routes/HTML.pm
  2. 54 0
      www/templates/paginator.tx
  3. 4 4
      www/templates/posts.tx

+ 7 - 3
lib/Trog/Routes/HTML.pm

@@ -711,7 +711,6 @@ sub posts ($query, $render_cb) {
         my $route = $query->{route};
         my %alias = ( '/humans.txt' => '/about');
         $route = $alias{$route} if exists $alias{$route};
-        print "$route\n";
 
         my $t_processor;
         $t_processor = Text::Xslate->new(
@@ -731,6 +730,9 @@ sub posts ($query, $render_cb) {
     $query->{title} = "$query->{domain} : $posts[0]{title}" if $query->{id} && $posts[0]{title} && $query->{domain};
     my $limit = int($query->{limit} || 25);
 
+    my $now_year = (localtime(time))[5] + 1900;
+    my $oldest_year = $now_year - 20; #XXX actually find oldest post year
+
     my $content = $processor->render('posts.tx', {
         title     => $query->{title},
         posts     => \@posts,
@@ -744,8 +746,10 @@ sub posts ($query, $render_cb) {
         rss       => !$query->{id} && !$query->{older},
         tiled     => scalar(grep { $_ eq $query->{route} } qw{/files /audio /video /image /series /about}),
         category  => $themed ? Theme::path_to_tile($query->{route}) : $query->{route},
-        about_header => $header,
-        about_footer => $footer,
+        header    => $header,
+        footer    => $footer,
+        years     => [reverse($oldest_year..$now_year)],
+        months    => [0..11],
     });
     return Trog::Routes::HTML::index($query, $render_cb, $content, $styles);
 }

+ 54 - 0
www/templates/paginator.tx

@@ -22,5 +22,59 @@
                 : }
             </select>
         </form>
+        Jump to:
+        <form style="display:inline;" id="paginator-jump">
+            <select name="year" class="coolbutton">
+                : for $years -> $year {
+                <option value="<: $year :>"><: $year :></option>
+                : }
+            </select>
+            <select name="month" class="coolbutton">
+                : for $months -> $month {
+                <option value="<: $month :>"><: $month :></option>
+                : }
+            </select>
+            <input type="hidden" name="older" value="" />
+            <input type="submit" class="coolbutton" value="Go" />
+        </form>
     </div>
 </div>
+<script type="text/javascript">
+    function updateOlder () {
+        var year  = document.querySelector("#paginator-jump select[name='year']");
+        var month = document.querySelector("#paginator-jump select[name='month']");
+        var older = document.querySelector("#paginator-jump input[name='older']");
+        if (older) {
+            var d = new Date(0);
+            d.setYear(year.value);
+            d.setMonth(month.value);
+            d.setDate(0);
+            older.value = d.getTime() / 1000;
+        }
+    }
+
+    document.addEventListener("DOMContentLoaded", function(event) {
+        updateOlder();
+        var months = document.querySelectorAll("#paginator-jump select[name='month'] option");
+        var d = new Date();
+        for (var month of months) {
+            d.setMonth(month.value);
+            month.innerHTML = d.toLocaleString('default', { month: 'long' });
+        }
+
+        //Ensure the 'older' value updates
+        var m = document.querySelector("#paginator-jump select[name='month']");
+        if (m) {
+            m.onchange = function (evt) {
+                updateOlder();
+            };
+        }
+
+        var y  = document.querySelector("#paginator-jump select[name='year']");
+        if (y) {
+            y.onchange = function (evt) {
+                updateOlder();
+            };
+        }
+    });
+</script>

+ 4 - 4
www/templates/posts.tx

@@ -4,8 +4,8 @@
 <: $category :>:
 : }
 </span>
-: if ( $about_header ) {
-    <: $about_header | mark_raw :>
+: if ( $header ) {
+    <: $header | mark_raw :>
 : }
 <hr class="divider" />
 : for $posts -> $post {
@@ -138,8 +138,8 @@
 : if ( $rss || $older ) {
 : include "paginator.tx";
 : }
-: if ( $about_footer ) {
-    <: $about_footer | mark_raw :>
+: if ( $footer ) {
+    <: $footer | mark_raw :>
 : }
 <script>
 document.addEventListener("DOMContentLoaded", function(event) {