paginator.tx 3.0 KB

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