paginator.tx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. :if ( $pages && !$embed ) {
  2. <div id="paginator">
  3. : } else {
  4. <div id="paginator" class="disabled">
  5. : }
  6. : if ( $paginate_offset ) {
  7. <div style="float:left; margin-top:.5rem;">Page <: $page :> of <: $pages_total :></div>
  8. <div style="float:right;">
  9. : if ( $page > 1 ) {
  10. <a rel="prev" href="?page=<: $page - 1 :>&limit=<: $limit :><: if( $like ) { "&like=" ~ $like } :>">Prev</a>
  11. : }
  12. : if ( $page < $pages_total ) {
  13. <a rel="next" href="?page=<: $page + 1 :>&limit=<: $limit :><: if( $like ) { "&like=" ~ $like } :>">Next</a>
  14. : }
  15. Size:
  16. <form style="display:inline;">
  17. : if ( $like ) {
  18. <input type="hidden" name="like" value="<: $like :>" />
  19. : }
  20. <!-- Back to the first page: a page number means nothing once the pages are a different size. -->
  21. <input type="hidden" name="page" value="1" />
  22. <select name="limit" class="coolbutton">
  23. : for $sizes -> $size {
  24. <option value="<: $size :>"><: $size :></option>
  25. : }
  26. </select>
  27. </form>
  28. </div>
  29. </div>
  30. : } else {
  31. : if ( $older || $newer ) {
  32. <div style="float:left; margin-top:.5rem;"> <: $limit :> most recent posts older than <span id="paginatorTime"><: $older :></span></div>
  33. : }
  34. <div style="float:right;">
  35. <a rel="prev" href="?older=<: $older :>&limit=<: $limit :><: if( $like ) { "&like=" ~ $like } :>">Prev</a>
  36. <a rel="next" href="?newer=<: $newer :>&limit=<: $limit :><: if( $like ) { "&like=" ~ $like } :>">Next</a>
  37. Size:
  38. <form style="display:inline;">
  39. : if ( $older ) {
  40. <input type="hidden" name="older" value="<: $older :>" />
  41. : }
  42. : if ( $like ) {
  43. <input type="hidden" name="like" value="<: $like :>" />
  44. : }
  45. <select name="limit" class="coolbutton">
  46. : for $sizes -> $size {
  47. <option value="<: $size :>"><: $size :></option>
  48. : }
  49. </select>
  50. </form>
  51. Jump to:
  52. <form style="display:inline;" id="paginator-jump">
  53. <select name="year" class="coolbutton">
  54. : for $years -> $year {
  55. <option value="<: $year :>"><: $year :></option>
  56. : }
  57. </select>
  58. <select name="month" class="coolbutton">
  59. : for $months -> $month {
  60. <option value="<: $month :>"><: $month :></option>
  61. : }
  62. </select>
  63. <input type="hidden" name="older" value="" />
  64. <input type="submit" class="coolbutton" value="Go" />
  65. </form>
  66. </div>
  67. </div>
  68. : }
  69. <script type="text/javascript">
  70. function updateOlder () {
  71. var year = document.querySelector("#paginator-jump select[name='year']");
  72. var month = document.querySelector("#paginator-jump select[name='month']");
  73. var older = document.querySelector("#paginator-jump input[name='older']");
  74. if (older) {
  75. var d = new Date(0);
  76. d.setYear(year.value);
  77. d.setMonth(month.value);
  78. d.setDate(0);
  79. older.value = d.getTime() / 1000;
  80. }
  81. }
  82. document.addEventListener("DOMContentLoaded", function(event) {
  83. updateOlder();
  84. var months = document.querySelectorAll("#paginator-jump select[name='month'] option");
  85. var d = new Date();
  86. for (var month of months) {
  87. d.setMonth(month.value);
  88. month.innerHTML = d.toLocaleString('default', { month: 'long' });
  89. }
  90. //Ensure the 'older' value updates
  91. var m = document.querySelector("#paginator-jump select[name='month']");
  92. if (m) {
  93. m.onchange = function (evt) {
  94. updateOlder();
  95. };
  96. }
  97. var y = document.querySelector("#paginator-jump select[name='year']");
  98. if (y) {
  99. y.onchange = function (evt) {
  100. updateOlder();
  101. };
  102. }
  103. });
  104. </script>